﻿using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Xml;

//c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WinUser.h

namespace PickGold.Api
{
	#region SC

	public static class SC
	{
		//SendMessage(Handle, WM_SYSCOMMAND, SC_MONITORPOWER, monitorOpen ? 0 : 1);
		public const int SIZE = 0xF000;
		public const int MOVE = 0xF010;
		public const int MINIMIZE = 0xF020;
		public const int MAXIMIZE = 0xF030;
		public const int NEXTWINDOW = 0xF040;
		public const int PREVWINDOW = 0xF050;
		public const int CLOSE = 0xF060;
		public const int VSCROLL = 0xF070;
		public const int HSCROLL = 0xF080;
		public const int MOUSEMENU = 0xF090;
		public const int KEYMENU = 0xF100;
		public const int ARRANGE = 0xF110;
		public const int RESTORE = 0xF120;
		public const int TASKLIST = 0xF130;
		public const int SCREENSAVE = 0xF140;
		public const int HOTKEY = 0xF150;
		//#if(WINVER >= 0x0400)
		public const int DEFAULT = 0xF160;
		/// <summary>
		/// 0xF170
		/// </summary>
		public const int MONITORPOWER = 0xF170;
		public const int CONTEXTHELP = 0xF180;
		public const int SEPARATOR = 0xF00F;
		//#endif /* WINVER >= 0x0400 */

		//#if(WINVER >= 0x0600)
		//#define SCF_ISSECURE    0x00000001
		//#endif /* WINVER >= 0x0600 */

		/*
		 * Obsolete names
		 */
		public const int ICON = SC.MINIMIZE;
		public const int ZOOM = SC.MAXIMIZE;
	}

	#endregion

	#region SND

	public static class SND
	{
		public const int ASYNC = 0x0001;
		public const int FILENAME = 0x00020000;
	}

	#endregion

	#region PBT

	public static class PBT
	{
		// begin_pbt
		public const int APMQUERYSUSPEND = 0x0000;
		public const int APMQUERYSTANDBY = 0x0001;

		public const int APMQUERYSUSPENDFAILED = 0x0002;
		public const int APMQUERYSTANDBYFAILED = 0x0003;

		public const int APMSUSPEND = 0x0004;
		public const int APMSTANDBY = 0x0005;

		public const int APMRESUMECRITICAL = 0x0006;
		public const int APMRESUMESUSPEND = 0x0007;
		public const int APMRESUMESTANDBY = 0x0008;

		//#define PBTF_APMRESUMEFROMFAILURE        0x00000001

		public const int APMBATTERYLOW = 0x0009;
		public const int APMPOWERSTATUSCHANGE = 0x000A;

		public const int APMOEMEVENT = 0x000B;
		public const int APMRESUMEAUTOMATIC = 0x0012;
		// end_pbt
	}

	#endregion

	#region SW

	/// <summary>
	/// 窗口显示状态
	/// </summary>
	public static class SW
	{
		public const int FORCEMINIMIZE = 0x0;
		/// <summary>
		/// 隐藏窗口，使其它窗口变为激活的。
		/// </summary>
		public const int HIDE = 0x1;
		public const int MAXIMIZE = 0x2;
		/// <summary>
		/// 最小化指定的窗口，并激活系统列表中的顶层窗口。
		/// </summary>
		public const int MINIMIZE = 0x3;
		/// <summary>
		/// 激活并显示窗口。如果窗口是最小化或最大化的，Windows将把它恢复到原来的大小和位置（与SW_SHOWNORMAL相同）。
		/// </summary>
		public const int RESTORE = 0x4;
		/// <summary>
		/// 激活窗口并按照当前的位置和大小显示窗口。
		/// </summary>
		public const int SHOW = 0x5;
		public const int SHOWDEFAULT = 0x6;
		/// <summary>
		/// 激活窗口并将其显示为最大化的。
		/// </summary>
		public const int SHOWMAXIMIZED = 0x7;
		/// <summary>
		/// 激活窗口并将其显示为图标。
		/// </summary>
		public const int SHOWMINIMIZED = 0x8;
		/// <summary>
		/// 将窗口显示为图标。当前激活的窗口仍保持激活状态。
		/// </summary>
		public const int SHOWMINNOACTIVE = 0x9;
		/// <summary>
		/// 按当前状态显示窗口。当前激活的窗口仍保持激活状态。
		/// </summary>
		public const int SHOWNA = 0xA;
		/// <summary>
		/// 按最近的位置和大小显示窗口。当前激活的窗口仍保持激活状态。 
		/// </summary>
		public const int SHOWNOACTIVATE = 0xB;
		/// <summary>
		/// 激活并显示窗口。如果窗口是最小化或最大化的，Windows将它恢复到原来的大小和位置（与SW_RESTORE相同）。 
		/// </summary>
		public const int SHOWNORMAL = 0xC;
	}

	#endregion

	#region MK

	public static class MK
	{
		public const int LBUTTON = 0x0001;
		public const int RBUTTON = 0x0002;
		public const int SHIFT = 0x0004;
		public const int CONTROL = 0x0008;
		public const int MBUTTON = 0x0010;
		public const int XBUTTON1 = 0x0020;
		public const int XBUTTON2 = 0x0040;
	}

	#endregion

	#region VK

	public static class VK
	{
		/// <summary>
		/// 1 鼠标的左键
		/// </summary>
		public const int LBUTTON = 0x01;// 1 鼠标的左键
		/// <summary>
		/// 2 鼠标的右键
		/// </summary>
		public const int RBUTTON = 0x02;// 2 鼠标的右键
		/// <summary>
		/// 3 Contol-break 执行
		/// </summary>
		public const int CANCEL = 0x03;// 3 Contol-break 执行
		/// <summary>
		/// 4 鼠标的中键（三按键鼠标)
		/// </summary>
		public const int MBUTTON = 0x04;// 4 鼠标的中键（三按键鼠标)
		public const int XBUTTON1 = 0x05;
		public const int XBUTTON2 = 0x06;
		/// <summary>
		/// 8 Backspace键
		/// </summary>
		public const int BACK = 0x08;// 8 Backspace键
		/// <summary>
		/// 9 Tab键
		/// </summary>
		public const int TAB = 0x09;// 9 Tab键
		/// <summary>
		/// 12 Clear键
		/// </summary>
		public const int CLEAR = 0x0C;// 12 Clear键
		/// <summary>
		/// 13 Enter键
		/// </summary>
		public const int RETURN = 0x0D;// 13 Enter键
		/// <summary>
		/// 16 Shift键
		/// </summary>
		public const int SHIFT = 0x10;// 16 Shift键
		/// <summary>
		/// 17 Ctrl键
		/// </summary>
		public const int CONTROL = 0x11;// 17 Ctrl键
		/// <summary>
		/// 18 Alt键
		/// </summary>
		public const int MENU = 0x12;// 18 Alt键
		/// <summary>
		/// 19 Pause键
		/// </summary>
		public const int PAUSE = 0x13;// 19 Pause键
		/// <summary>
		/// 20 Caps Lock键
		/// </summary>
		public const int CAPITAL = 0x14;// 20 Caps Lock键
		public const int KANA = 0x15;
		public const int HANGEUL = 0x15;
		public const int HANGUL = 0x15;
		public const int JUNJA = 0x17;
		public const int FINAL = 0x18;
		public const int HANJA = 0x19;
		public const int KANJI = 0x19;
		/// <summary>
		/// 27 Ese键
		/// </summary>
		public const int ESCAPE = 0x1B;// 27 Ese键
		public const int CONVERT = 0x1C;
		public const int NONCONVERT = 0x1D;
		public const int ACCEPT = 0x1E;
		public const int MODECHANGE = 0x1F;
		/// <summary>
		/// 32 Spacebar键
		/// </summary>
		public const int SPACE = 0x20;// 32 Spacebar键
		/// <summary>
		/// 33 Page Up键
		/// </summary>
		public const int PRIOR = 0x21;// 33 Page Up键
		/// <summary>
		/// 34 Page Domw键
		/// </summary>
		public const int NEXT = 0x22;// 34 Page Domw键
		/// <summary>
		/// 35 End键
		/// </summary>
		public const int END = 0x23;// 35 End键
		/// <summary>
		/// 36 Home键
		/// </summary>
		public const int HOME = 0x24;// 36 Home键
		/// <summary>
		/// 37 LEFT ARROW 键(←)
		/// </summary>
		public const int LEFT = 0x25;// 37 LEFT ARROW 键(←)
		/// <summary>
		/// 38 UP ARROW键(↑)
		/// </summary>
		public const int UP = 0x26;// 38 UP ARROW键(↑)
		/// <summary>
		/// 39 RIGHT ARROW键(→)
		/// </summary>
		public const int RIGHT = 0x27;// 39 RIGHT ARROW键(→)
		/// <summary>
		/// 40 DOWN ARROW键(↓)
		/// </summary>
		public const int DOWN = 0x28;// 40 DOWN ARROW键(↓)
		/// <summary>
		/// 41 SELECT键
		/// </summary>
		public const int SELECT = 0x29;// 41 SELECT键
		public const int PRINT = 0x2A;
		/// <summary>
		/// 43 EXECUTE键
		/// </summary>
		public const int EXECUTE = 0x2B;// 43 EXECUTE键
		/// <summary>
		/// 44 Print Screen键 
		/// </summary>
		public const int SNAPSHOT = 0x2C;// 44 Print Screen键
		/// <summary>
		/// 45 Ins键
		/// </summary>
		public const int INSERT = 0x2D;// 45 Ins键
		/// <summary>
		/// 46 Del键
		/// </summary>
		public const int DELETE = 0x2E;// 46 Del键
		/// <summary>
		/// 47 Help键
		/// </summary>
		public const int HELP = 0x2F;// 47 Help键
		/// <summary>
		/// 48 0键
		/// </summary>
		public const int MAINPAD0 = 0x30;// 48 0键
		/// <summary>
		/// 49 1键
		/// </summary>
		public const int MAINPAD1 = 0x31;// 49 1键
		/// <summary>
		/// 50 2键
		/// </summary>
		public const int MAINPAD2 = 0x32;// 50 2键
		/// <summary>
		/// 51 3键
		/// </summary>
		public const int MAINPAD3 = 0x33;// 51 3键
		/// <summary>
		/// 52 4键
		/// </summary>
		public const int MAINPAD4 = 0x34;// 52 4键
		/// <summary>
		/// 53 5键
		/// </summary>
		public const int MAINPAD5 = 0x35;// 53 5键
		/// <summary>
		/// 54 6键
		/// </summary>
		public const int MAINPAD6 = 0x36;// 54 6键
		/// <summary>
		/// 55 7键
		/// </summary>
		public const int MAINPAD7 = 0x37;// 55 7键
		/// <summary>
		/// 56 8键
		/// </summary>
		public const int MAINPAD8 = 0x38;// 56 8键
		/// <summary>
		/// 57 9键
		/// </summary>
		public const int MAINPAD9 = 0x39;// 57 9键
		/// <summary>
		/// 65 A键
		/// </summary>
		public const int A = 0x41;// 65 A键
		/// <summary>
		/// 66 B键
		/// </summary>
		public const int B = 0x42;// 66 B键
		/// <summary>
		/// 67 C键
		/// </summary>
		public const int C = 0x43;// 67 C键
		/// <summary>
		/// 68 D键
		/// </summary>
		public const int D = 0x44;// 68 D键
		/// <summary>
		/// 69 E键
		/// </summary>
		public const int E = 0x45;// 69 E键
		/// <summary>
		/// 70 F键
		/// </summary>
		public const int F = 0x46;// 70 F键
		/// <summary>
		/// 71 G键
		/// </summary>
		public const int G = 0x47;// 71 G键
		/// <summary>
		/// 72 H键
		/// </summary>
		public const int H = 0x48;// 72 H键
		/// <summary>
		/// 73 I键
		/// </summary>
		public const int I = 0x49;// 73 I键
		/// <summary>
		/// 74 J键
		/// </summary>
		public const int J = 0x4A;// 74 J键
		/// <summary>
		/// 75 K键
		/// </summary>
		public const int K = 0x4B;// 75 K键
		/// <summary>
		/// 76 L键
		/// </summary>
		public const int L = 0x4C;// 76 L键
		/// <summary>
		/// 77 M键
		/// </summary>
		public const int M = 0x4D;// 77 M键
		/// <summary>
		/// 78 N键
		/// </summary>
		public const int N = 0x4E;// 78 N键
		/// <summary>
		/// 79 O键
		/// </summary>
		public const int O = 0x4F;// 79 O键
		/// <summary>
		/// 80 P键
		/// </summary>
		public const int P = 0x50;// 80 P键
		/// <summary>
		/// 81 Q键
		/// </summary>
		public const int Q = 0x51;// 81 Q键
		/// <summary>
		/// 82 R键
		/// </summary>
		public const int R = 0x52;// 82 R键
		/// <summary>
		/// 83 S键
		/// </summary>
		public const int S = 0x53;// 83 S键
		/// <summary>
		/// 84 T键
		/// </summary>
		public const int T = 0x54;// 84 T键
		/// <summary>
		/// 85 U键
		/// </summary>
		public const int U = 0x55;// 85 U键
		/// <summary>
		/// 86 V键
		/// </summary>
		public const int V = 0x56;// 86 V键
		/// <summary>
		/// 87 W键
		/// </summary>
		public const int W = 0x57;// 87 W键
		/// <summary>
		/// 88 X键
		/// </summary>
		public const int X = 0x58;// 88 X键
		/// <summary>
		/// 89 Y键
		/// </summary>
		public const int Y = 0x59;// 89 Y键
		/// <summary>
		/// 90 Z键
		/// </summary>
		public const int Z = 0x5A;// 90 Z键
		public const int LWIN = 0x5B;
		public const int RWIN = 0x5C;
		public const int APPS = 0x5D;
		public const int SLEEP = 0x5F;
		/// <summary>
		/// 96 数字键0键
		/// </summary>
		public const int NUMPAD0 = 0x60;// 96 数字键0键
		/// <summary>
		/// 97 数字键1键
		/// </summary>
		public const int NUMPAD1 = 0x61;// 97 数字键1键
		/// <summary>
		/// 98 数字键2键
		/// </summary>
		public const int NUMPAD2 = 0x62;// 98 数字键2键
		/// <summary>
		/// 99 数字键3键
		/// </summary>
		public const int NUMPAD3 = 0x63;// 99 数字键3键
		/// <summary>
		/// 100 数字键4键
		/// </summary>
		public const int NUMPAD4 = 0x64;// 100 数字键4键
		/// <summary>
		/// 101 数字键5键
		/// </summary>
		public const int NUMPAD5 = 0x65;// 101 数字键5键
		/// <summary>
		/// 102 数字键6键
		/// </summary>
		public const int NUMPAD6 = 0x66;// 102 数字键6键
		/// <summary>
		/// 103 数字键7键
		/// </summary>
		public const int NUMPAD7 = 0x67;// 103 数字键7键
		/// <summary>
		/// 104 数字键8键
		/// </summary>
		public const int NUMPAD8 = 0x68;// 104 数字键8键
		/// <summary>
		/// 105 数字键9键
		/// </summary>
		public const int NUMPAD9 = 0x69;// 105 数字键9键
		/// <summary>
		/// 106 *键
		/// </summary>
		public const int MULTIPLY = 0x6A;// 106 *键
		/// <summary>
		/// 107 +键
		/// </summary>
		public const int ADD = 0x6B;// 107 +键
		/// <summary>
		/// 108 Separator键
		/// </summary>
		public const int SEPARATOR = 0x6C;// 108 Separator键
		/// <summary>
		/// 109 -键
		/// </summary>
		public const int SUBTRACT = 0x6D;// 109 -键
		/// <summary>
		/// 110 .键
		/// </summary>
		public const int DECIMAL = 0x6E;// 110 .键
		/// <summary>
		/// 111 键
		/// </summary>
		public const int DIVIDE = 0x6F;// 111 键
		/// <summary>
		/// 112 F1键
		/// </summary>
		public const int F1 = 0x70;// 112 F1键
		/// <summary>
		/// 113 F2键
		/// </summary>
		public const int F2 = 0x71;// 113 F2键
		/// <summary>
		/// 114 F3键
		/// </summary>
		public const int F3 = 0x72;// 114 F3键
		/// <summary>
		/// 115 F4键
		/// </summary>
		public const int F4 = 0x73;// 115 F4键
		/// <summary>
		/// 116 F5键
		/// </summary>
		public const int F5 = 0x74;// 116 F5键
		/// <summary>
		/// 117 F6键
		/// </summary>
		public const int F6 = 0x75;// 117 F6键
		/// <summary>
		/// 118 F7键
		/// </summary>
		public const int F7 = 0x76;// 118 F7键
		/// <summary>
		/// 119 F8键
		/// </summary>
		public const int F8 = 0x77;// 119 F8键
		/// <summary>
		/// 120 F9键
		/// </summary>
		public const int F9 = 0x78;// 120 F9键
		/// <summary>
		/// 121 F10键
		/// </summary>
		public const int F10 = 0x79;// 121 F10键
		/// <summary>
		/// 122 F11键
		/// </summary>
		public const int F11 = 0x7A;// 122 F11键
		/// <summary>
		/// 123 F12键
		/// </summary>
		public const int F12 = 0x7B;// 123 F12键
		public const int F13 = 0x7C;
		public const int F14 = 0x7D;
		public const int F15 = 0x7E;
		public const int F16 = 0x7F;
		public const int F17 = 0x80;
		public const int F18 = 0x81;
		public const int F19 = 0x82;
		public const int F20 = 0x83;
		public const int F21 = 0x84;
		public const int F22 = 0x85;
		public const int F23 = 0x86;
		public const int F24 = 0x87;
		/// <summary>
		/// 144 Num Lock 键
		/// </summary>
		public const int NUMLOCK = 0x90;// 144 Num Lock 键
		/// <summary>
		/// 145 Scroll Lock键 
		/// </summary>
		public const int SCROLL = 0x91;// 145 Scroll Lock键
		public const int OEM_FJ_JISHO = 0x92;// 'Dictionary' key
		public const int OEM_FJ_MASSHOU = 0x93;// 'Unregister word' key
		public const int OEM_FJ_TOUROKU = 0x94;// 'Register word' key
		public const int OEM_FJ_LOYA = 0x95;// 'Left OYAYUBI' key
		public const int OEM_FJ_ROYA = 0x96;// 'Right OYAYUBI' key
		public const int LSHIFT = 0xA0;
		public const int RSHIFT = 0xA1;
		public const int LCONTROL = 0xA2;
		public const int RCONTROL = 0xA3;
		public const int LMENU = 0xA4;
		public const int RMENU = 0xA5;

		public const int BROWSER_BACK = 0xA6;
		public const int BROWSER_FORWARD = 0xA7;
		public const int BROWSER_REFRESH = 0xA8;
		public const int BROWSER_STOP = 0xA9;
		public const int BROWSER_SEARCH = 0xAA;
		public const int BROWSER_FAVORITES = 0xAB;
		public const int BROWSER_HOME = 0xAC;

		public const int VOLUME_MUTE = 0xAD;
		public const int VOLUME_DOWN = 0xAE;
		public const int VOLUME_UP = 0xAF;
		public const int MEDIA_NEXT_TRACK = 0xB0;
		public const int MEDIA_PREV_TRACK = 0xB1;
		public const int MEDIA_STOP = 0xB2;
		public const int MEDIA_PLAY_PAUSE = 0xB3;
		public const int LAUNCH_MAIL = 0xB4;
		public const int LAUNCH_MEDIA_SELECT = 0xB5;
		public const int LAUNCH_APP1 = 0xB6;
		public const int LAUNCH_APP2 = 0xB7;

		/// <summary>
		/// ';:' for US
		/// </summary>
		public const int OEM_1 = 0xBA;// ';:' for US
		/// <summary>
		/// '+=' any country
		/// </summary>
		public const int OEM_PLUS = 0xBB;// '+=' any country
		/// <summary>
		/// ',&lt;' any country
		/// </summary>
		public const int OEM_COMMA = 0xBC;// ',<' any country
		/// <summary>
		/// '-_' any country
		/// </summary>
		public const int OEM_MINUS = 0xBD;// '-_' any country
		/// <summary>
		/// '.&gt;' any country
		/// </summary>
		public const int OEM_PERIOD = 0xBE;// '.>' any country
		/// <summary>
		/// '/?' for US
		/// </summary>
		public const int OEM_2 = 0xBF;// '/?' for US
		/// <summary>
		/// '`~' for US
		/// </summary>
		public const int OEM_3 = 0xC0;// '`~' for US
		/// <summary>
		/// '[{' for US
		/// </summary>
		public const int OEM_4 = 0xDB;  //  '[{' for US
		/// <summary>
		/// '\|' for US
		/// </summary>
		public const int OEM_5 = 0xDC;  //  '\|' for US
		/// <summary>
		/// ']}' for US
		/// </summary>
		public const int OEM_6 = 0xDD;  //  ']}' for US
		/// <summary>
		/// ''"' for US
		/// </summary>
		public const int OEM_7 = 0xDE;  //  ''"' for US
		public const int OEM_8 = 0xDF;
		/// <summary>
		/// 'AX' key on Japanese AX kbd
		/// </summary>
		public const int OEM_AX = 0xE1;  //  'AX' key on Japanese AX kbd
		/// <summary>
		/// "&lt;&gt;" or "\|" on RT 102-key kbd.
		/// </summary>
		public const int OEM_102 = 0xE2;  //  "<>" or "\|" on RT 102-key kbd.
		/// <summary>
		/// Help key on ICO
		/// </summary>
		public const int ICO_HELP = 0xE3;  //  Help key on ICO
		/// <summary>
		/// 00 key on ICO
		/// </summary>
		public const int ICO_00 = 0xE4;  //  00 key on ICO

		public const int PROCESSKEY = 0xE5;
		public const int ICO_CLEAR = 0xE6;
		public const int PACKET = 0xE7;
		public const int OEM_RESET = 0xE9;
		public const int OEM_JUMP = 0xEA;
		public const int OEM_PA1 = 0xEB;
		public const int OEM_PA2 = 0xEC;
		public const int OEM_PA3 = 0xED;
		public const int OEM_WSCTRL = 0xEE;
		public const int OEM_CUSEL = 0xEF;
		public const int OEM_ATTN = 0xF0;
		public const int OEM_FINISH = 0xF1;
		public const int OEM_COPY = 0xF2;
		public const int OEM_AUTO = 0xF3;
		public const int OEM_ENLW = 0xF4;
		public const int OEM_BACKTAB = 0xF5;

		public const int ATTN = 0xF6;
		public const int CRSEL = 0xF7;
		public const int EXSEL = 0xF8;
		public const int EREOF = 0xF9;
		public const int PLAY = 0xFA;
		public const int ZOOM = 0xFB;
		public const int NONAME = 0xFC;
		public const int PA1 = 0xFD;
		public const int OEM_CLEAR = 0xFE;
	}

	#endregion

	#region BM

	public static class BM
	{
		public const int GETCHECK = 0x00F0;
		public const int SETCHECK = 0x00F1;
		public const int GETSTATE = 0x00F2;
		public const int SETSTATE = 0x00F3;
		public const int SETSTYLE = 0x00F4;
		public const int CLICK = 0x00F5;
		public const int GETIMAGE = 0x00F6;
		public const int SETIMAGE = 0x00F7;
		/// <summary>
		/// win6
		/// </summary>
		public const int SETDONTCLICK = 0x00F8;
	}

	#endregion

	#region SM

	/// <summary>
	/// GetSystemMetrics
	/// </summary>
	public static class SM
	{
		/// <summary>
		/// 屏幕大小
		/// </summary>
		public const int CXSCREEN = 0;
		/// <summary>
		/// 屏幕大小
		/// </summary>
		public const int CYSCREEN = 1;
		/// <summary>
		/// 垂直滚动条中的箭头按钮的大小
		/// </summary>
		public const int CXVSCROLL = 2;
		/// <summary>
		/// 水平滚动条上的箭头大小
		/// </summary>
		public const int CYHSCROLL = 3;
		/// <summary>
		/// 窗口标题的高度
		/// </summary>
		public const int CYCAPTION = 4;
		/// <summary>
		/// 尺寸不可变边框的大小
		/// </summary>
		public const int CXBORDER = 5;
		/// <summary>
		/// 尺寸不可变边框的大小
		/// </summary>
		public const int CYBORDER = 6;
		/// <summary>
		/// 对话框边框的大小
		/// </summary>
		public const int CXDLGFRAME = 7;
		/// <summary>
		/// 对话框边框的大小
		/// </summary>
		public const int CYDLGFRAME = 8;
		/// <summary>
		/// 垂直滚动条上滚动块的高度
		/// </summary>
		public const int CYVTHUMB = 9;
		/// <summary>
		/// 滚动块在水平滚动条上的大小
		/// </summary>
		public const int CXHTHUMB = 10;
		/// <summary>
		/// 标准图标的大小
		/// </summary>
		public const int CXICON = 11;
		/// <summary>
		/// 标准图标的大小
		/// </summary>
		public const int CYICON = 12;
		/// <summary>
		/// 标准指针大小
		/// </summary>
		public const int CXCURSOR = 13;
		/// <summary>
		/// 标准指针大小
		/// </summary>
		public const int CYCURSOR = 14;
		/// <summary>
		/// 菜单高度
		/// </summary>
		public const int CYMENU = 15;
		/// <summary>
		/// 最大化窗口客户区的大小
		/// </summary>
		public const int CXFULLSCREEN = 16;
		/// <summary>
		/// 最大化窗口客户区的大小
		/// </summary>
		public const int CYFULLSCREEN = 17;
		/// <summary>
		/// Kanji窗口的大小（Height of Kanji window）
		/// </summary>
		public const int CYKANJIWINDOW = 18;
		/// <summary>
		/// 如安装了鼠标则为TRUE
		/// </summary>
		public const int MOUSEPRESENT = 19;
		/// <summary>
		/// 垂直滚动条中的箭头按钮的大小
		/// </summary>
		public const int CYVSCROLL = 20;
		/// <summary>
		/// 水平滚动条上的箭头大小
		/// </summary>
		public const int CXHSCROLL = 21;
		/// <summary>
		/// 如windows的调试版正在运行，则为TRUE
		/// </summary>
		public const int DEBUG = 22;
		/// <summary>
		/// 如左右鼠标键已经交换，则为TRUE
		/// </summary>
		public const int SWAPBUTTON = 23;
		public const int RESERVED1 = 24;
		public const int RESERVED2 = 25;
		public const int RESERVED3 = 26;
		public const int RESERVED4 = 27;
		/// <summary>
		/// 窗口的最小尺寸
		/// </summary>
		public const int CXMIN = 28;
		/// <summary>
		/// 窗口的最小尺寸
		/// </summary>
		public const int CYMIN = 29;
		/// <summary>
		/// 标题栏位图的大小
		/// </summary>
		public const int CXSIZE = 30;
		/// <summary>
		/// 标题栏位图的大小
		/// </summary>
		public const int CYSIZE = 31;
		/// <summary>
		/// 尺寸可变边框的大小（在win95和nt 4.0中使用SM_C?FIXEDFRAME）
		/// </summary>
		public const int CXFRAME = 32;
		/// <summary>
		/// 尺寸可变边框的大小（在win95和nt 4.0中使用SM_C?FIXEDFRAME）
		/// </summary>
		public const int CYFRAME = 33;
		/// <summary>
		/// 窗口的最小轨迹宽度
		/// </summary>
		public const int CXMINTRACK = 34;
		/// <summary>
		/// 窗口的最小轨迹宽度
		/// </summary>
		public const int CYMINTRACK = 35;
		/// <summary>
		/// 双击区域的大小
		/// </summary>
		public const int CXDOUBLECLK = 36;
		/// <summary>
		/// 双击区域的大小
		/// </summary>
		public const int CYDOUBLECLK = 37;
		/// <summary>
		/// 桌面图标之间的间隔距离。在win95和nt 4.0中是指大图标的间距
		/// </summary>
		public const int CXICONSPACING = 38;
		/// <summary>
		/// 桌面图标之间的间隔距离。在win95和nt 4.0中是指大图标的间距
		/// </summary>
		public const int CYICONSPACING = 39;
		/// <summary>
		/// 如弹出式菜单对齐菜单栏项目的左侧，则为零
		/// </summary>
		public const int MENUDROPALIGNMENT = 40;
		/// <summary>
		/// 如装载了支持笔窗口的DLL，则表示笔窗口的句柄
		/// </summary>
		public const int PENWINDOWS = 41;
		/// <summary>
		/// 如支持双字节则为TRUE
		/// </summary>
		public const int DBCSENABLED = 42;
		/// <summary>
		/// 鼠标按钮（按键）的数量。如没有鼠标，就为零
		/// </summary>
		public const int CMOUSEBUTTONS = 43;

		public const int CXFIXEDFRAME = CXDLGFRAME;  /* ;win40 name change */
		public const int CYFIXEDFRAME = CYDLGFRAME;  /* ;win40 name change */
		/// <summary>
		/// 具有WS_THICKFRAME样式的窗口的大小
		/// </summary>
		public const int CXSIZEFRAME = CXFRAME;     /* ;win40 name change */
		/// <summary>
		/// 具有WS_THICKFRAME样式的窗口的大小
		/// </summary>
		public const int CYSIZEFRAME = CYFRAME;     /* ;win40 name change */

		/// <summary>
		/// 如安装了安全（保密）机制，则为TRUE
		/// </summary>
		public const int SECURE = 44;
		public const int CXEDGE = 45;
		public const int CYEDGE = 46;
		public const int CXMINSPACING = 47;
		public const int CYMINSPACING = 48;
		/// <summary>
		/// 小图标的大小
		/// </summary>
		public const int CXSMICON = 49;
		/// <summary>
		/// 小图标的大小
		/// </summary>
		public const int CYSMICON = 50;
		/// <summary>
		/// 小标题的高度
		/// </summary>
		public const int CYSMCAPTION = 51;
		/// <summary>
		/// 小标题按钮的大小
		/// </summary>
		public const int CXSMSIZE = 52;
		/// <summary>
		/// 小标题按钮的大小 
		/// </summary>
		public const int CYSMSIZE = 53;
		/// <summary>
		/// 菜单栏上的按钮大小
		/// </summary>
		public const int CXMENUSIZE = 54;
		/// <summary>
		/// 菜单栏上的按钮大小
		/// </summary>
		public const int CYMENUSIZE = 55;
		/// <summary>
		/// 设置windows如何排列最小化窗口的一个标志。参考api32.txt中的ARW常数
		/// </summary>
		public const int ARRANGE = 56;
		/// <summary>
		/// 最小化的窗口必须填充进去的一个矩形小于或等于SM_C?ICONSPACING
		/// </summary>
		public const int CXMINIMIZED = 57;
		/// <summary>
		/// 最小化的窗口必须填充进去的一个矩形小于或等于SM_C?ICONSPACING
		/// </summary>
		public const int CYMINIMIZED = 58;
		/// <summary>
		/// 改变窗口大小时，最大的轨迹宽度
		/// </summary>
		public const int CXMAXTRACK = 59;
		/// <summary>
		/// 改变窗口大小时，最大的轨迹宽度
		/// </summary>
		public const int CYMAXTRACK = 60;
		/// <summary>
		/// 最大化窗口的默认尺寸
		/// </summary>
		public const int CXMAXIMIZED = 61;
		/// <summary>
		/// 最大化窗口的默认尺寸
		/// </summary>
		public const int CYMAXIMIZED = 62;
		/// <summary>
		/// 如安装了网络，则设置位0。其他位保留未用
		/// </summary>
		public const int NETWORK = 63;
		/// <summary>
		/// 指定启动模式。0=普通模式；1=带网络支持的安全模式
		/// </summary>
		public const int CLEANBOOT = 67;
		public const int CXDRAG = 68;
		public const int CYDRAG = 69;
		/// <summary>
		/// 强制视觉提示播放声音
		/// </summary>
		public const int SHOWSOUNDS = 70;
		/// <summary>
		/// 菜单复选号位图的大小
		/// </summary>
		public const int CXMENUCHECK = 71;   /* Use instead of GetMenuCheckMarkDimensions()! */
		/// <summary>
		/// 菜单复选号位图的大小
		/// </summary>
		public const int CYMENUCHECK = 72;
		/// <summary>
		/// 系统速度太慢，但仍在运行中（System is too slow for effective use but is being run anyway）
		/// </summary>
		public const int SLOWMACHINE = 73;
		/// <summary>
		/// 允许了希伯来和阿拉伯语
		/// </summary>
		public const int MIDEASTENABLED = 74;

		/// <summary>
		/// 如安装了带轮鼠标则为TRUE；只适用于nt 4.0
		/// </summary>
		public const int MOUSEWHEELPRESENT = 75;
		public const int XVIRTUALSCREEN = 76;
		public const int YVIRTUALSCREEN = 77;
		public const int CXVIRTUALSCREEN = 78;
		public const int CYVIRTUALSCREEN = 79;
		public const int CMONITORS = 80;
		public const int SAMEDISPLAYFORMAT = 81;
		public const int IMMENABLED = 82;
		public const int CXFOCUSBORDER = 83;
		public const int CYFOCUSBORDER = 84;

		public const int TABLETPC = 86;
		public const int MEDIACENTER = 87;
		public const int STARTER = 88;
		public const int SERVERR2 = 89;

		public const int MOUSEHORIZONTALWHEELPRESENT = 91;
		public const int CXPADDEDBORDER = 92;

		//#if (WINVER < 0x0500) && (!defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0400))
		//public const int CMETRICS = 76;
		//#elif WINVER == 0x500
		//public const int CMETRICS = 83;
		//#elif WINVER == 0x501
		//public const int CMETRICS = 90;
		//#else
		/// <summary>
		/// 可用系统环境的数量
		/// </summary>
		public const int CMETRICS = 93;
		//#endif

		public const int REMOTESESSION = 0x1000;


		public const int SHUTTINGDOWN = 0x2000;

		public const int REMOTECONTROL = 0x2001;

		public const int CARETBLINKINGENABLED = 0x2002;
	}

	#endregion

	#region GW

	public static class GW
	{
		public const int HWNDFIRST = 0;
		public const int HWNDLAST = 1;
		public const int HWNDNEXT = 2;
		public const int HWNDPREV = 3;
		public const int OWNER = 4;
		public const int CHILD = 5;
		public const int ENABLEDPOPUP = 6;
		public const int MAX = 6;
	}

	#endregion

	#region GWL

	/// <summary>
	/// Window field offsets for GetWindowLong()
	/// </summary>
	public static class GWL
	{
		/// <summary>
		/// 该窗口的窗口函数的地址
		/// </summary>
		public const int WNDPROC = (-4);
		/// <summary>
		/// 拥有窗口的实例的句柄
		/// </summary>
		public const int HINSTANCE = (-6);
		/// <summary>
		/// 该窗口之父的句柄。不要用SetWindowWord来改变这个值
		/// </summary>
		public const int HWNDPARENT = (-8);
		/// <summary>
		/// 窗口样式
		/// </summary>
		public const int STYLE = (-16);
		/// <summary>
		/// 扩展窗口样式
		/// </summary>
		public const int EXSTYLE = (-20);
		/// <summary>
		/// 含义由应用程序规定
		/// </summary>
		public const int USERDATA = (-21);
		/// <summary>
		/// 对话框中一个子窗口的标识符
		/// </summary>
		public const int ID = (-12);

		//#ifdef _WIN64

		//#undef GWL_WNDPROC
		//#undef GWL_HINSTANCE
		//#undef GWL_HWNDPARENT
		//#undef GWL_USERDATA

		//#endif /* _WIN64 */
	}

	#endregion

	#region DWL

	/// <summary>
	/// Get/SetWindowWord/Long offsets for use with WC_DIALOG windows
	/// </summary>
	public static class DWL
	{
		/// <summary>
		/// 在对话框函数中处理的一条消息返回的值
		/// </summary>
		public const int MSGRESULT = 0;
		/// <summary>
		/// 这个窗口的对话框函数地址
		/// </summary>
		public const int DLGPROC = 4;
		/// <summary>
		/// 含义由应用程序规定
		/// </summary>
		public const int USER = 8;

		//#ifdef _WIN64

		//#undef DWL_MSGRESULT
		//#undef DWL_DLGPROC
		//#undef DWL_USER

		//#endif /* _WIN64 */
	}

	#endregion

	#region READ

	public static class READ
	{
		public const int CONTROL = 0x00020000;
	}

	#endregion

	#region STANDARD STANDARD_RIGHTS

	public static class STANDARD
	{
		public static class RIGHTS
		{
			public const int REQUIRED = 0x000F0000;
			public const int READ = PickGold.Api.READ.CONTROL;
			public const int WRITE = PickGold.Api.READ.CONTROL;
			public const int EXECUTE = PickGold.Api.READ.CONTROL;
			public const int ALL = 0x001F0000;
		}
	}

	#endregion

	#region SECTION

	public static class SECTION
	{
		public static class MAP
		{
			public const int WRITE = 0x0002;
			public const int READ = 0x0004;
			public const int EXECUTE = 0x0008;
			public const int EXECUTE_EXPLICIT = 0x0020; // not included in SECTION_ALL_ACCESS
		}

		public const int QUERY = 0x0001;
		public const int EXTEND_SIZE = 0x0010;
		public const int ALL_ACCESS = STANDARD.RIGHTS.REQUIRED | SECTION.QUERY | SECTION.MAP.WRITE | SECTION.MAP.READ | SECTION.MAP.EXECUTE | SECTION.EXTEND_SIZE;
	}

	#endregion

	#region PAGE

	public static class PAGE//c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WinNT.h
	{
		public const int NOACCESS = 0x01;
		public const int READONLY = 0x02;
		public const int READWRITE = 0x04;
		public const int WRITECOPY = 0x08;
		public const int EXECUTE = 0x10;
		public const int EXECUTE_READ = 0x20;
		public const int EXECUTE_READWRITE = 0x40;
		public const int EXECUTE_WRITECOPY = 0x80;
		public const int GUARD = 0x100;
		public const int NOCACHE = 0x200;
		public const int WRITECOMBINE = 0x400;
	}

	#endregion

	#region SEC

	public static class SEC//WinNT.h
	{
		public const int FILE = 0x800000;
		public const int IMAGE = 0x1000000;
		public const int PROTECTED_IMAGE = 0x2000000;
		public const int RESERVE = 0x4000000;
		public const int COMMIT = 0x8000000;
		public const int NOCACHE = 0x10000000;
		public const int WRITECOMBINE = 0x40000000;
		//public const int LARGE_PAGES = 0x80000000;
	}

	#endregion

	#region MEM

	public static class MEM//WinNT.h
	{
		public const int COMMIT = 0x1000;
		public const int RESERVE = 0x2000;
		public const int DECOMMIT = 0x4000;
		public const int RELEASE = 0x8000;
		public const int FREE = 0x10000;
		public const int PRIVATE = 0x20000;
		public const int MAPPED = 0x40000;
		public const int RESET = 0x80000;
		public const int TOP_DOWN = 0x100000;
		public const int WRITE_WATCH = 0x200000;
		public const int PHYSICAL = 0x400000;
		public const int ROTATE = 0x800000;
		public const int LARGE_PAGES = 0x20000000;
		//public const int _4MB_PAGES = 0x80000000;
		public const int IMAGE = SEC.IMAGE;
	}

	#endregion

	#region FILE FILE_MAP

	public static class FILE
	{
		public static class FLAG
		{
			//public const int WRITE_THROUGH = 0x80000000;
			public const int OVERLAPPED = 0x40000000;
			public const int NO_BUFFERING = 0x20000000;
			public const int RANDOM_ACCESS = 0x10000000;
			public const int SEQUENTIAL_SCAN = 0x08000000;
			public const int DELETE_ON_CLOSE = 0x04000000;
			public const int BACKUP_SEMANTICS = 0x02000000;
			public const int POSIX_SEMANTICS = 0x01000000;
			public const int OPEN_REPARSE_POINT = 0x00200000;
			public const int OPEN_NO_RECALL = 0x00100000;
			public const int FIRST_PIPE_INSTANCE = 0x00080000;
		}

		public static class MAP
		{
			public const int COPY = SECTION.QUERY;
			public const int WRITE = SECTION.MAP.WRITE;
			public const int READ = SECTION.MAP.READ;
			public const int ALL_ACCESS = SECTION.ALL_ACCESS;
			public const int EXECUTE = SECTION.MAP.EXECUTE_EXPLICIT;    // not included in FILE.MAP.ALL_ACCESS
		}

		public const int ANY_ACCESS = 0;
		public const int ENCRYPTABLE = 0;
		public const int IS_ENCRYPTED = 1;
		public const int SYSTEM_ATTR = 2;
		public const int ROOT_DIR = 3;
		public const int SYSTEM_DIR = 4;
		public const int UNKNOWN = 5;
		public const int SYSTEM_NOT_SUPPORT = 6;
		public const int USER_DISALLOWED = 7;
		public const int READ_ONLY = 8;
		public const int DIR_DISALLOWED = 9;
		public const int DEVICE_FILE_SYSTEM = 9;
	}

	#endregion

	#region PIPE

	public static class PIPE//c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WinBase.h
	{
		public static class ACCESS
		{
			public const int INBOUND = 0x00000001;
			public const int OUTBOUND = 0x00000002;
			public const int DUPLEX = 0x00000003;
		}

		public const int CLIENT_END = 0x00000000;// Define the Named Pipe End flags for GetNamedPipeInfo
		public const int SERVER_END = 0x00000001;
		public const int WAIT = 0x00000000;// Define the dwPipeMode values for CreateNamedPipe
		public const int NOWAIT = 0x00000001;
		public const int READMODE_BYTE = 0x00000000;
		public const int READMODE_MESSAGE = 0x00000002;
		public const int TYPE_BYTE = 0x00000000;
		public const int TYPE_MESSAGE = 0x00000004;
		public const int ACCEPT_REMOTE_CLIENTS = 0x00000000;
		public const int REJECT_REMOTE_CLIENTS = 0x00000008;
		public const int UNLIMITED_INSTANCES = 255;// Define the well known values for CreateNamedPipe nMaxInstances
	}

	#endregion

	#region INVALID

	public static class INVALID
	{
		public const int HANDLE_VALUE = -1;//((HANDLE)(LONG_PTR)-1)
		public const long FILE_SIZE = 0xFFFFFFFF;//((DWORD)0xFFFFFFFF)
		public const long SET_FILE_POINTER = -1;//((DWORD)-1)
		public const long FILE_ATTRIBUTES = -1;//((DWORD)-1)
	}

	#endregion

	#region ERROR

	/// <summary>
	/// 
	/// </summary>
	public static class ERROR//c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WinError.h//C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\WinError.h
	{
		/// <summary>
		/// 0,The operation completed successfully.
		/// </summary>
		public const int SUCCESS = 0;
		/// <summary>
		/// SUCCESS
		/// </summary>
		[Obsolete("SUCCESS")]
		public const int E0 = SUCCESS;

		/// <summary>
		/// 2,File Not Found
		/// </summary>
		public const int FILE_NOT_FOUND = 2;
		/// <summary>
		/// FILE_NOT_FOUND
		/// </summary>
		[Obsolete("FILE_NOT_FOUND")]
		public const int E2 = FILE_NOT_FOUND;

		/// <summary>
		/// 5,Access is denied.
		/// </summary>
		public const int ACCESS_DENIED = 5;
		/// <summary>
		/// ACCESS_DENIED
		/// </summary>
		[Obsolete("ACCESS_DENIED")]
		public const int E5 = ACCESS_DENIED;

		/// <summary>
		/// 8,Not enough storage is available to process this command.
		/// </summary>
		public const int NOT_ENOUGH_MEMORY = 8;
		/// <summary>
		/// NOT_ENOUGH_MEMORY
		/// </summary>
		[Obsolete("NOT_ENOUGH_MEMORY")]
		public const int E8 = NOT_ENOUGH_MEMORY;

		/// <summary>
		/// 13,The data is invalid.
		/// </summary>
		public const int INVALID_DATA = 13;
		/// <summary>
		/// INVALID_DATA
		/// </summary>
		[Obsolete("INVALID_DATA")]
		public const int E13 = INVALID_DATA;

		/// <summary>
		/// 14,Not enough storage is available to complete this operation.
		/// </summary>
		public const int OUTOFMEMORY = 14;
		/// <summary>
		/// OUTOFMEMORY
		/// </summary>
		[Obsolete("OUTOFMEMORY")]
		public const int E14 = OUTOFMEMORY;

		/// <summary>
		/// 23,Data error (cyclic redundancy check).
		/// </summary>
		public const int CRC = 23;
		/// <summary>
		/// CRC
		/// </summary>
		[Obsolete("CRC")]
		public const int E23 = CRC;

		/// <summary>
		/// 24,The program issued a command but the command length is incorrect.
		/// </summary>
		public const int BAD_LENGTH = 24;
		/// <summary>
		/// BAD_LENGTH
		/// </summary>
		[Obsolete("BAD_LENGTH")]
		public const int E24 = BAD_LENGTH;

		/// <summary>
		/// 50,The request is not supported.
		/// </summary>
		public const int NOT_SUPPORTED = 50;
		/// <summary>
		/// NOT_SUPPORTED
		/// </summary>
		[Obsolete("NOT_SUPPORTED")]
		public const int E50 = NOT_SUPPORTED;

		/// <summary>
		/// 53,The network path was not found.
		/// </summary>
		public const int BAD_NETPATH = 53;
		/// <summary>
		/// BAD_NETPATH
		/// </summary>
		[Obsolete("BAD_NETPATH")]
		public const int E53 = BAD_NETPATH;

		/// <summary>
		/// 54,The network is busy.
		/// </summary>
		public const int NETWORK_BUSY = 54;
		/// <summary>
		/// NETWORK_BUSY
		/// </summary>
		[Obsolete("NETWORK_BUSY")]
		public const int E54 = NETWORK_BUSY;

		/// <summary>
		/// 66,The network resource type is not correct.
		/// </summary>
		public const int BAD_NETWORK_TYPE = 66;
		/// <summary>
		/// BAD_NETWORK_TYPE
		/// </summary>
		[Obsolete("BAD_NETWORK_TYPE")]
		public const int E66 = BAD_NETWORK_TYPE;

		/// <summary>
		/// 86,The specified network password is not correct.
		/// </summary>
		public const int INVALID_PASSWORD = 86;
		/// <summary>
		/// INVALID_PASSWORD
		/// </summary>
		[Obsolete("INVALID_PASSWORD")]
		public const int E86 = INVALID_PASSWORD;

		/// <summary>
		/// 87,The parameter is incorrect.
		/// </summary>
		public const int INVALID_PARAMETER = 87;
		/// <summary>
		/// INVALID_PARAMETER
		/// </summary>
		[Obsolete("INVALID_PARAMETER")]
		public const int E87 = INVALID_PARAMETER;

		/// <summary>
		/// 117,The IOCTL call made by the application program is not correct.
		/// </summary>
		public const int INVALID_CATEGORY = 117;
		/// <summary>
		/// INVALID_CATEGORY
		/// </summary>
		[Obsolete("INVALID_CATEGORY")]
		public const int E117 = INVALID_CATEGORY;

		/// <summary>
		/// 123,The filename, directory name, or volume label syntax is incorrect.
		/// </summary>
		public const int INVALID_NAME = 123;
		/// <summary>
		/// INVALID_NAME
		/// </summary>
		[Obsolete("INVALID_NAME")]
		public const int E123 = INVALID_NAME;

		/// <summary>
		/// 124,The system call level is not correct.
		/// </summary>
		public const int INVALID_LEVEL = 124;
		/// <summary>
		/// INVALID_LEVEL
		/// </summary>
		[Obsolete("INVALID_LEVEL")]
		public const int E124 = INVALID_LEVEL;

		/// <summary>
		/// 160,One or more arguments are not correct.
		/// </summary>
		public const int BAD_ARGUMENTS = 160;
		/// <summary>
		/// BAD_ARGUMENTS
		/// </summary>
		[Obsolete("BAD_ARGUMENTS")]
		public const int E160 = BAD_ARGUMENTS;

		/// <summary>
		/// 170,The requested resource is in use.
		/// </summary>
		public const int BUSY = 170;
		/// <summary>
		/// BUSY
		/// </summary>
		[Obsolete("BUSY")]
		public const int E170 = BUSY;

		/// <summary>
		/// 183,Cannot create a file when that file already exists.
		/// </summary>
		public const int ALREADY_EXISTS = 183;
		/// <summary>
		/// ALREADY_EXISTS
		/// </summary>
		[Obsolete("ALREADY_EXISTS")]
		public const int E183 = ALREADY_EXISTS;

		/// <summary>
		/// 186,The flag passed is not correct.
		/// </summary>
		public const int INVALID_FLAG_NUMBER = 186;
		/// <summary>
		/// INVALID_FLAG_NUMBER
		/// </summary>
		[Obsolete("INVALID_FLAG_NUMBER")]
		public const int E186 = INVALID_FLAG_NUMBER;

		/// <summary>
		/// 209,The signal being posted is not correct.
		/// </summary>
		public const int INVALID_SIGNAL_NUMBER = 209;
		/// <summary>
		/// INVALID_SIGNAL_NUMBER
		/// </summary>
		[Obsolete("INVALID_SIGNAL_NUMBER")]
		public const int E209 = INVALID_SIGNAL_NUMBER;

		/// <summary>
		/// 232,The pipe is being closed.
		/// </summary>
		public const int NO_DATA = 232;
		/// <summary>
		/// NO_DATA
		/// </summary>
		[Obsolete("NO_DATA")]
		public const int E232 = NO_DATA;

		/// <summary>
		/// 234,More data is available.
		/// </summary>
		public const int MORE_DATA = 234;
		/// <summary>
		/// MORE_DATA
		/// </summary>
		[Obsolete("MORE_DATA")]
		public const int E234 = MORE_DATA;

		/// <summary>
		/// 258,The wait operation timed out.
		/// </summary>
		public const int TIMEOUT = 258;
		/// <summary>
		/// TIMEOUT
		/// </summary>
		[Obsolete("TIMEOUT")]
		public const int E258 = TIMEOUT;

		/// <summary>
		/// 259,No more data is available.
		/// </summary>
		public const int NO_MORE_ITEMS = 259;
		/// <summary>
		/// NO_MORE_ITEMS
		/// </summary>
		[Obsolete("NO_MORE_ITEMS")]
		public const int E259 = NO_MORE_ITEMS;

		/// <summary>
		/// 487,Attempt to access invalid address.
		/// </summary>
		public const int INVALID_ADDRESS = 487;
		/// <summary>
		/// INVALID_ADDRESS
		/// </summary>
		[Obsolete("INVALID_ADDRESS")]
		public const int E487 = INVALID_ADDRESS;

		/// <summary>
		/// 606,An attempt to generate a security audit failed.
		/// </summary>
		public const int AUDIT_FAILED = 606;
		/// <summary>
		/// AUDIT_FAILED
		/// </summary>
		[Obsolete("AUDIT_FAILED")]
		public const int E606 = AUDIT_FAILED;

		/// <summary>
		/// 615,The password provided is too short to meet the policy of your user account. Please choose a longer password.
		/// </summary>
		public const int PWD_TOO_SHORT = 615;
		/// <summary>
		/// PWD_TOO_SHORT
		/// </summary>
		[Obsolete("PWD_TOO_SHORT")]
		public const int E615 = PWD_TOO_SHORT;

		/// <summary>
		/// 1202,The local device name has a remembered connection to another network resource.
		/// </summary>
		public const int DEVICE_ALREADY_REMEMBERED = 1202;
		/// <summary>
		/// DEVICE_ALREADY_REMEMBERED
		/// </summary>
		[Obsolete("DEVICE_ALREADY_REMEMBERED")]
		public const int E1202 = DEVICE_ALREADY_REMEMBERED;

		/// <summary>
		/// 1203,No network provider accepted the given network path.
		/// </summary>
		public const int NO_NET_OR_BAD_PATH = 1203;
		/// <summary>
		/// NO_NET_OR_BAD_PATH
		/// </summary>
		[Obsolete("NO_NET_OR_BAD_PATH")]
		public const int E1203 = NO_NET_OR_BAD_PATH;

		/// <summary>
		/// 1208,An extended error has occurred.
		/// </summary>
		public const int EXTENDED_ERROR = 1208;
		/// <summary>
		/// EXTENDED_ERROR
		/// </summary>
		[Obsolete("EXTENDED_ERROR")]
		public const int E1208 = EXTENDED_ERROR;

		/// <summary>
		/// 1217,The format of the specified message name is invalid.
		/// </summary>
		public const int INVALID_MESSAGENAME = 1217;
		/// <summary>
		/// INVALID_MESSAGENAME
		/// </summary>
		[Obsolete("INVALID_MESSAGENAME")]
		public const int E1217 = INVALID_MESSAGENAME;

		/// <summary>
		/// 1222,The network is not present or not started.
		/// </summary>
		public const int NO_NETWORK = 1222;
		/// <summary>
		/// NO_NETWORK
		/// </summary>
		[Obsolete("NO_NETWORK")]
		public const int E1222 = NO_NETWORK;

		/// <summary>
		/// 1307,This security ID may not be assigned as the owner of this object.
		/// </summary>
		public const int INVALID_OWNER = 1307;
		/// <summary>
		/// INVALID_OWNER
		/// </summary>
		[Obsolete("INVALID_OWNER")]
		public const int E1307 = INVALID_OWNER;

		/// <summary>
		/// 1308,This security ID may not be assigned as the primary group of an object.
		/// </summary>
		public const int INVALID_PRIMARY_GROUP = 1308;
		/// <summary>
		/// INVALID_PRIMARY_GROUP
		/// </summary>
		[Obsolete("INVALID_PRIMARY_GROUP")]
		public const int E1308 = INVALID_PRIMARY_GROUP;

		/// <summary>
		/// 1311,There are currently no logon servers available to service the logon request.
		/// </summary>
		public const int NO_LOGON_SERVERS = 1311;
		/// <summary>
		/// NO_LOGON_SERVERS
		/// </summary>
		[Obsolete("NO_LOGON_SERVERS")]
		public const int E1311 = NO_LOGON_SERVERS;

		/// <summary>
		/// 1312,A specified logon session does not exist. It may already have been terminated.
		/// </summary>
		public const int NO_SUCH_LOGON_SESSION = 1312;
		/// <summary>
		/// NO_SUCH_LOGON_SESSION
		/// </summary>
		[Obsolete("NO_SUCH_LOGON_SESSION")]
		public const int E1312 = NO_SUCH_LOGON_SESSION;

		/// <summary>
		/// 1313,A specified privilege does not exist.
		/// </summary>
		public const int NO_SUCH_PRIVILEGE = 1313;
		/// <summary>
		/// NO_SUCH_PRIVILEGE
		/// </summary>
		[Obsolete("NO_SUCH_PRIVILEGE")]
		public const int E1313 = NO_SUCH_PRIVILEGE;

		/// <summary>
		/// 1315,The name provided is not a properly formed account name.
		/// </summary>
		public const int INVALID_ACCOUNT_NAME = 1315;
		/// <summary>
		/// INVALID_ACCOUNT_NAME
		/// </summary>
		[Obsolete("INVALID_ACCOUNT_NAME")]
		public const int E1315 = INVALID_ACCOUNT_NAME;

		/// <summary>
		/// 1316,The specified account already exists.
		/// </summary>
		public const int USER_EXISTS = 1316;
		/// <summary>
		/// USER_EXISTS
		/// </summary>
		[Obsolete("USER_EXISTS")]
		public const int E1316 = USER_EXISTS;

		/// <summary>
		/// 1317,The specified account does not exist.
		/// </summary>
		public const int NO_SUCH_USER = 1317;
		/// <summary>
		/// NO_SUCH_USER
		/// </summary>
		[Obsolete("NO_SUCH_USER")]
		public const int E1317 = NO_SUCH_USER;

		/// <summary>
		/// 1318,The specified group already exists.
		/// </summary>
		public const int GROUP_EXISTS = 1318;
		/// <summary>
		/// GROUP_EXISTS
		/// </summary>
		[Obsolete("GROUP_EXISTS")]
		public const int E1318 = GROUP_EXISTS;

		/// <summary>
		/// 1319,The specified group does not exist.
		/// </summary>
		public const int NO_SUCH_GROUP = 1319;
		/// <summary>
		/// NO_SUCH_GROUP
		/// </summary>
		[Obsolete("NO_SUCH_GROUP")]
		public const int E1319 = NO_SUCH_GROUP;

		/// <summary>
		/// 1320,Either the specified user account is already a member of the specified group, or the specified group cannot be deleted because it contains a member.
		/// </summary>
		public const int MEMBER_IN_GROUP = 1320;
		/// <summary>
		/// MEMBER_IN_GROUP
		/// </summary>
		[Obsolete("MEMBER_IN_GROUP")]
		public const int E1320 = MEMBER_IN_GROUP;

		/// <summary>
		/// 1321,The specified user account is not a member of the specified group account.
		/// </summary>
		public const int MEMBER_NOT_IN_GROUP = 1321;
		/// <summary>
		/// MEMBER_NOT_IN_GROUP
		/// </summary>
		[Obsolete("MEMBER_NOT_IN_GROUP")]
		public const int E1321 = MEMBER_NOT_IN_GROUP;

		/// <summary>
		/// 1322,The last remaining administration account cannot be disabled or deleted.
		/// </summary>
		public const int LAST_ADMIN = 1322;
		/// <summary>
		/// LAST_ADMIN
		/// </summary>
		[Obsolete("LAST_ADMIN")]
		public const int E1322 = LAST_ADMIN;

		/// <summary>
		/// 1323,Unable to update the password. The value provided as the current password is incorrect.
		/// </summary>
		public const int WRONG_PASSWORD = 1323;
		/// <summary>
		/// WRONG_PASSWORD
		/// </summary>
		[Obsolete("WRONG_PASSWORD")]
		public const int E1323 = WRONG_PASSWORD;

		/// <summary>
		/// 1324,Unable to update the password. The value provided for the new password contains values that are not allowed in passwords.
		/// </summary>
		public const int ILL_FORMED_PASSWORD = 1324;
		/// <summary>
		/// ILL_FORMED_PASSWORD
		/// </summary>
		[Obsolete("ILL_FORMED_PASSWORD")]
		public const int E1324 = ILL_FORMED_PASSWORD;

		/// <summary>
		/// 1325,Unable to update the password. The value provided for the new password does not meet the length, complexity, or history requirements of the domain.
		/// </summary>
		public const int PASSWORD_RESTRICTION = 1325;
		/// <summary>
		/// PASSWORD_RESTRICTION
		/// </summary>
		[Obsolete("PASSWORD_RESTRICTION")]
		public const int E1325 = PASSWORD_RESTRICTION;

		/// <summary>
		/// 1326,Logon failure: unknown user name or bad password.
		/// </summary>
		public const int LOGON_FAILURE = 1326;
		/// <summary>
		/// LOGON_FAILURE
		/// </summary>
		[Obsolete("LOGON_FAILURE")]
		public const int E1326 = LOGON_FAILURE;

		/// <summary>
		/// 1327,Logon failure: user account restriction. Possible reasons are blank passwords not allowed, logon hour restrictions, or a policy restriction has been enforced.
		/// </summary>
		public const int ACCOUNT_RESTRICTION = 1327;
		/// <summary>
		/// ACCOUNT_RESTRICTION
		/// </summary>
		[Obsolete("ACCOUNT_RESTRICTION")]
		public const int E1327 = ACCOUNT_RESTRICTION;

		/// <summary>
		/// 1328,Logon failure: account logon time restriction violation.
		/// </summary>
		public const int INVALID_LOGON_HOURS = 1328;
		/// <summary>
		/// INVALID_LOGON_HOURS
		/// </summary>
		[Obsolete("INVALID_LOGON_HOURS")]
		public const int E1328 = INVALID_LOGON_HOURS;

		/// <summary>
		/// 1329,Logon failure: user not allowed to log on to this computer.
		/// </summary>
		public const int INVALID_WORKSTATION = 1329;
		/// <summary>
		/// INVALID_WORKSTATION
		/// </summary>
		[Obsolete("INVALID_WORKSTATION")]
		public const int E1329 = INVALID_WORKSTATION;

		/// <summary>
		/// 1330,Logon failure: the specified account password has expired.
		/// </summary>
		public const int PASSWORD_EXPIRED = 1330;
		/// <summary>
		/// PASSWORD_EXPIRED
		/// </summary>
		[Obsolete("PASSWORD_EXPIRED")]
		public const int E1330 = PASSWORD_EXPIRED;

		/// <summary>
		/// 1331,Logon failure: account currently disabled.
		/// </summary>
		public const int ACCOUNT_DISABLED = 1331;
		/// <summary>
		/// ACCOUNT_DISABLED
		/// </summary>
		[Obsolete("ACCOUNT_DISABLED")]
		public const int E1331 = ACCOUNT_DISABLED;

		/// <summary>
		/// 1337,The security ID structure is invalid.
		/// </summary>
		public const int INVALID_SID = 1337;
		/// <summary>
		/// INVALID_SID
		/// </summary>
		[Obsolete("INVALID_SID")]
		public const int E1337 = INVALID_SID;

		/// <summary>
		/// 1341,The server is currently disabled.
		/// </summary>
		public const int SERVER_DISABLED = 1341;
		/// <summary>
		/// SERVER_DISABLED
		/// </summary>
		[Obsolete("SERVER_DISABLED")]
		public const int E1341 = SERVER_DISABLED;

		/// <summary>
		/// 1343,The value provided was an invalid value for an identifier authority.
		/// </summary>
		public const int INVALID_ID_AUTHORITY = 1343;
		/// <summary>
		/// INVALID_ID_AUTHORITY
		/// </summary>
		[Obsolete("INVALID_ID_AUTHORITY")]
		public const int E1343 = INVALID_ID_AUTHORITY;

		/// <summary>
		/// 1363,Cannot start a new logon session with an ID that is already in use.
		/// </summary>
		public const int LOGON_SESSION_EXISTS = 1363;
		/// <summary>
		/// LOGON_SESSION_EXISTS
		/// </summary>
		[Obsolete("LOGON_SESSION_EXISTS")]
		public const int E1363 = LOGON_SESSION_EXISTS;

		/// <summary>
		/// 1365,The logon session is not in a state that is consistent with the requested operation.
		/// </summary>
		public const int BAD_LOGON_SESSION_STATE = 1365;
		/// <summary>
		/// BAD_LOGON_SESSION_STATE
		/// </summary>
		[Obsolete("BAD_LOGON_SESSION_STATE")]
		public const int E1365 = BAD_LOGON_SESSION_STATE;

		/// <summary>
		/// 1366,The logon session ID is already in use.
		/// </summary>
		public const int LOGON_SESSION_COLLISION = 1366;
		/// <summary>
		/// LOGON_SESSION_COLLISION
		/// </summary>
		[Obsolete("LOGON_SESSION_COLLISION")]
		public const int E1366 = LOGON_SESSION_COLLISION;

		/// <summary>
		/// 1367,A logon request contained an invalid logon type value.
		/// </summary>
		public const int INVALID_LOGON_TYPE = 1367;
		/// <summary>
		/// INVALID_LOGON_TYPE
		/// </summary>
		[Obsolete("INVALID_LOGON_TYPE")]
		public const int E1367 = INVALID_LOGON_TYPE;

		/// <summary>
		/// 1380,Logon failure: the user has not been granted the requested logon type at this computer.
		/// </summary>
		public const int LOGON_NOT_GRANTED = 1380;
		/// <summary>
		/// LOGON_NOT_GRANTED
		/// </summary>
		[Obsolete("LOGON_NOT_GRANTED")]
		public const int E1380 = LOGON_NOT_GRANTED;

		/// <summary>
		/// 1387,A member could not be added to or removed from the local group because the member does not exist.
		/// </summary>
		public const int NO_SUCH_MEMBER = 1387;
		/// <summary>
		/// NO_SUCH_MEMBER
		/// </summary>
		[Obsolete("NO_SUCH_MEMBER")]
		public const int E1387 = NO_SUCH_MEMBER;

		/// <summary>
		/// 1388,A new member could not be added to a local group because the member has the wrong account type.
		/// </summary>
		public const int INVALID_MEMBER = 1388;
		/// <summary>
		/// INVALID_MEMBER
		/// </summary>
		[Obsolete("INVALID_MEMBER")]
		public const int E1388 = INVALID_MEMBER;

		/// <summary>
		/// 1394,There is no user session key for the specified logon session.
		/// </summary>
		public const int NO_USER_SESSION_KEY = 1394;
		/// <summary>
		/// NO_USER_SESSION_KEY
		/// </summary>
		[Obsolete("NO_USER_SESSION_KEY")]
		public const int E1394 = NO_USER_SESSION_KEY;

		/// <summary>
		/// 1396,Logon Failure: The target account name is incorrect.
		/// </summary>
		public const int WRONG_TARGET_NAME = 1396;
		/// <summary>
		/// WRONG_TARGET_NAME
		/// </summary>
		[Obsolete("WRONG_TARGET_NAME")]
		public const int E1396 = WRONG_TARGET_NAME;

		/// <summary>
		/// 1397,Mutual Authentication failed. The server's password is out of date at the domain controller.
		/// </summary>
		public const int MUTUAL_AUTH_FAILED = 1397;
		/// <summary>
		/// MUTUAL_AUTH_FAILED
		/// </summary>
		[Obsolete("MUTUAL_AUTH_FAILED")]
		public const int E1397 = MUTUAL_AUTH_FAILED;

		/// <summary>
		/// 1609,Handle is in an invalid state.
		/// </summary>
		public const int INVALID_HANDLE_STATE = 1609;
		/// <summary>
		/// INVALID_HANDLE_STATE
		/// </summary>
		[Obsolete("INVALID_HANDLE_STATE")]
		public const int E1609 = INVALID_HANDLE_STATE;

		/// <summary>
		/// 1907,Handle is in an invalid state.
		/// </summary>
		public const int PASSWORD_MUST_CHANGE = 1907;
		/// <summary>
		/// PASSWORD_MUST_CHANGE
		/// </summary>
		[Obsolete("PASSWORD_MUST_CHANGE")]
		public const int E1907 = PASSWORD_MUST_CHANGE;

		/// <summary>
		/// 2202,The specified username is invalid.
		/// </summary>
		public const int BAD_USERNAME = 2202;
		/// <summary>
		/// BAD_USERNAME
		/// </summary>
		[Obsolete("BAD_USERNAME")]
		public const int E2202 = BAD_USERNAME;

		/// <summary>
		/// 4390,The file or directory is not a reparse point.
		/// </summary>
		public const int NOT_A_REPARSE_POINT = 4390;
		/// <summary>
		/// NOT_A_REPARSE_POINT
		/// </summary>
		[Obsolete("NOT_A_REPARSE_POINT")]
		public const int E4390 = NOT_A_REPARSE_POINT;

		/// <summary>
		/// 4391,The reparse point attribute cannot be set because it conflicts with an existing attribute.
		/// </summary>
		public const int REPARSE_ATTRIBUTE_CONFLICT = 4391;
		/// <summary>
		/// REPARSE_ATTRIBUTE_CONFLICT
		/// </summary>
		[Obsolete("REPARSE_ATTRIBUTE_CONFLICT")]
		public const int E4391 = REPARSE_ATTRIBUTE_CONFLICT;

		/// <summary>
		/// 4392,The data present in the reparse point buffer is invalid.
		/// </summary>
		public const int INVALID_REPARSE_DATA = 4392;
		/// <summary>
		/// INVALID_REPARSE_DATA
		/// </summary>
		[Obsolete("INVALID_REPARSE_DATA")]
		public const int E4392 = INVALID_REPARSE_DATA;

		/// <summary>
		/// 4393,The tag present in the reparse point buffer is invalid.
		/// </summary>
		public const int REPARSE_TAG_INVALID = 4393;
		/// <summary>
		/// REPARSE_TAG_INVALID
		/// </summary>
		[Obsolete("REPARSE_TAG_INVALID")]
		public const int E4393 = REPARSE_TAG_INVALID;

		/// <summary>
		/// 4394,There is a mismatch between the tag specified in the request and the tag present in the reparse point.
		/// </summary>
		public const int REPARSE_TAG_MISMATCH = 4394;
		/// <summary>
		/// REPARSE_TAG_MISMATCH
		/// </summary>
		[Obsolete("REPARSE_TAG_MISMATCH")]
		public const int E4394 = REPARSE_TAG_MISMATCH;

		/// <summary>
		/// 6118,The list of servers for this workgroup is not currently available.
		/// </summary>
		public const int NO_BROWSER_SERVERS_FOUND = 6118;
		/// <summary>
		/// NO_BROWSER_SERVERS_FOUND
		/// </summary>
		[Obsolete("NO_BROWSER_SERVERS_FOUND")]
		public const int E6118 = NO_BROWSER_SERVERS_FOUND;

		#region WSABASEERR

		/// <summary>
		/// 10000,WinSock error codes are also defined in WinSock.h and WinSock2.h, hence the IFDEF
		/// </summary>
		public const int WSABASEERR = 10000;
		/// <summary>
		/// WSABASEERR
		/// </summary>
		[Obsolete("WSABASEERR")]
		public const int E10000 = WSABASEERR;

		/// <summary>
		/// 10004,A blocking operation was interrupted by a call to WSACancelBlockingCall.
		/// </summary>
		public const int WSAEINTR = 10004;
		/// <summary>
		/// WSAEINTR
		/// </summary>
		[Obsolete("WSAEINTR")]
		public const int E10004 = WSAEINTR;

		/// <summary>
		/// 10009,The file handle supplied is not valid.
		/// </summary>
		public const int WSAEBADF = 10009;
		/// <summary>
		/// WSAEBADF
		/// </summary>
		[Obsolete("WSAEBADF")]
		public const int E10009 = WSAEBADF;

		/// <summary>
		/// 10013,An attempt was made to access a socket in a way forbidden by its access permissions.
		/// </summary>
		public const int WSAEACCES = 10013;
		/// <summary>
		/// WSAEACCES
		/// </summary>
		[Obsolete("WSAEACCES")]
		public const int E10013 = WSAEACCES;

		/// <summary>
		/// 10014,The system detected an invalid pointer address in attempting to use a pointer argument in a call.
		/// </summary>
		public const int WSAEFAULT = 10014;
		/// <summary>
		/// WSAEFAULT
		/// </summary>
		[Obsolete("WSAEFAULT")]
		public const int E10014 = WSAEFAULT;

		/// <summary>
		/// 10022,An invalid argument was supplied.
		/// </summary>
		public const int WSAEINVAL = 10022;
		/// <summary>
		/// WSAEINVAL
		/// </summary>
		[Obsolete("WSAEINVAL")]
		public const int E10022 = WSAEINVAL;

		/// <summary>
		/// 10024,Too many open sockets.
		/// </summary>
		public const int WSAEMFILE = 10024;
		/// <summary>
		/// WSAEMFILE
		/// </summary>
		[Obsolete("WSAEMFILE")]
		public const int E10024 = WSAEMFILE;

		/// <summary>
		/// 10035,A non-blocking socket operation could not be completed immediately.
		/// </summary>
		public const int WSAEWOULDBLOCK = 10035;
		/// <summary>
		/// WSAEWOULDBLOCK
		/// </summary>
		[Obsolete("WSAEWOULDBLOCK")]
		public const int E10035 = WSAEWOULDBLOCK;

		/// <summary>
		/// 10036,A blocking operation is currently executing.
		/// </summary>
		public const int WSAEINPROGRESS = 10036;
		/// <summary>
		/// WSAEINPROGRESS
		/// </summary>
		[Obsolete("WSAEINPROGRESS")]
		public const int E10036 = WSAEINPROGRESS;

		/// <summary>
		/// 10037,An operation was attempted on a non-blocking socket that already had an operation in progress.
		/// </summary>
		public const int WSAEALREADY = 10037;
		/// <summary>
		/// WSAEALREADY
		/// </summary>
		[Obsolete("WSAEALREADY")]
		public const int E10037 = WSAEALREADY;

		/// <summary>
		/// 10038,An operation was attempted on something that is not a socket.
		/// </summary>
		public const int WSAENOTSOCK = 10038;
		/// <summary>
		/// WSAENOTSOCK
		/// </summary>
		[Obsolete("WSAENOTSOCK")]
		public const int E10038 = WSAENOTSOCK;

		/// <summary>
		/// 10039,A required address was omitted from an operation on a socket.
		/// </summary>
		public const int WSAEDESTADDRREQ = 10039;
		/// <summary>
		/// WSAEDESTADDRREQ
		/// </summary>
		[Obsolete("WSAEDESTADDRREQ")]
		public const int E10039 = WSAEDESTADDRREQ;

		/// <summary>
		/// 10040,A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself.
		/// </summary>
		public const int WSAEMSGSIZE = 10040;
		/// <summary>
		/// WSAEMSGSIZE
		/// </summary>
		[Obsolete("WSAEMSGSIZE")]
		public const int E10040 = WSAEMSGSIZE;

		/// <summary>
		/// 10041,A protocol was specified in the socket function call that does not support the semantics of the socket type requested.
		/// </summary>
		public const int WSAEPROTOTYPE = 10041;
		/// <summary>
		/// WSAEPROTOTYPE
		/// </summary>
		[Obsolete("WSAEPROTOTYPE")]
		public const int E10041 = WSAEPROTOTYPE;

		/// <summary>
		/// 10042,An unknown, invalid, or unsupported option or level was specified in a getsockopt or setsockopt call.
		/// </summary>
		public const int WSAENOPROTOOPT = 10042;
		/// <summary>
		/// WSAENOPROTOOPT
		/// </summary>
		[Obsolete("WSAENOPROTOOPT")]
		public const int E10042 = WSAENOPROTOOPT;

		/// <summary>
		/// 10043,The requested protocol has not been configured into the system, or no implementation for it exists.
		/// </summary>
		public const int WSAEPROTONOSUPPORT = 10043;
		/// <summary>
		/// WSAEPROTONOSUPPORT
		/// </summary>
		[Obsolete("WSAEPROTONOSUPPORT")]
		public const int E10043 = WSAEPROTONOSUPPORT;

		/// <summary>
		/// 10044,The support for the specified socket type does not exist in this address family.
		/// </summary>
		public const int WSAESOCKTNOSUPPORT = 10044;
		/// <summary>
		/// WSAESOCKTNOSUPPORT
		/// </summary>
		[Obsolete("WSAESOCKTNOSUPPORT")]
		public const int E10044 = WSAESOCKTNOSUPPORT;

		/// <summary>
		/// 10045,The attempted operation is not supported for the type of object referenced.
		/// </summary>
		public const int WSAEOPNOTSUPP = 10045;
		/// <summary>
		/// WSAEOPNOTSUPP
		/// </summary>
		[Obsolete("WSAEOPNOTSUPP")]
		public const int E10045 = WSAEOPNOTSUPP;

		/// <summary>
		/// 10046,The protocol family has not been configured into the system or no implementation for it exists.
		/// </summary>
		public const int WSAEPFNOSUPPORT = 10046;
		/// <summary>
		/// WSAEPFNOSUPPORT
		/// </summary>
		[Obsolete("WSAEPFNOSUPPORT")]
		public const int E10046 = WSAEPFNOSUPPORT;

		/// <summary>
		/// 10047,An address incompatible with the requested protocol was used.
		/// </summary>
		public const int WSAEAFNOSUPPORT = 10047;
		/// <summary>
		/// WSAEAFNOSUPPORT
		/// </summary>
		[Obsolete("WSAEAFNOSUPPORT")]
		public const int E10047 = WSAEAFNOSUPPORT;

		/// <summary>
		/// 10048,Only one usage of each socket address (protocol/network address/port) is normally permitted.
		/// </summary>
		public const int WSAEADDRINUSE = 10048;
		/// <summary>
		/// WSAEADDRINUSE
		/// </summary>
		[Obsolete("WSAEADDRINUSE")]
		public const int E10048 = WSAEADDRINUSE;

		/// <summary>
		/// 10049,The requested address is not valid in its context.
		/// </summary>
		public const int WSAEADDRNOTAVAIL = 10049;
		/// <summary>
		/// WSAEADDRNOTAVAIL
		/// </summary>
		[Obsolete("WSAEADDRNOTAVAIL")]
		public const int E10049 = WSAEADDRNOTAVAIL;

		/// <summary>
		/// 10050,A socket operation encountered a dead network.
		/// </summary>
		public const int WSAENETDOWN = 10050;
		/// <summary>
		/// WSAENETDOWN
		/// </summary>
		[Obsolete("WSAENETDOWN")]
		public const int E10050 = WSAENETDOWN;

		/// <summary>
		/// 10051,A socket operation was attempted to an unreachable network.
		/// </summary>
		public const int WSAENETUNREACH = 10051;
		/// <summary>
		/// WSAENETUNREACH
		/// </summary>
		[Obsolete("WSAENETUNREACH")]
		public const int E10051 = WSAENETUNREACH;

		/// <summary>
		/// 10052,The connection has been broken due to keep-alive activity detecting a failure while the operation was in progress.
		/// </summary>
		public const int WSAENETRESET = 10052;
		/// <summary>
		/// WSAENETRESET
		/// </summary>
		[Obsolete("WSAENETRESET")]
		public const int E10052 = WSAENETRESET;

		/// <summary>
		/// 10053,An established connection was aborted by the software in your host machine.
		/// </summary>
		public const int WSAECONNABORTED = 10053;
		/// <summary>
		/// WSAECONNABORTED
		/// </summary>
		[Obsolete("WSAECONNABORTED")]
		public const int E10053 = WSAECONNABORTED;

		/// <summary>
		/// 10054,An existing connection was forcibly closed by the remote host.
		/// </summary>
		public const int WSAECONNRESET = 10054;
		/// <summary>
		/// WSAECONNRESET
		/// </summary>
		[Obsolete("WSAECONNRESET")]
		public const int E10054 = WSAECONNRESET;

		/// <summary>
		/// 10055,An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.
		/// </summary>
		public const int WSAENOBUFS = 10055;
		/// <summary>
		/// WSAENOBUFS
		/// </summary>
		[Obsolete("WSAENOBUFS")]
		public const int E10055 = WSAENOBUFS;

		/// <summary>
		/// 10056,A connect request was made on an already connected socket.
		/// </summary>
		public const int WSAEISCONN = 10056;
		/// <summary>
		/// WSAEISCONN
		/// </summary>
		[Obsolete("WSAEISCONN")]
		public const int E10056 = WSAEISCONN;

		/// <summary>
		/// 10057,A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied.
		/// </summary>
		public const int WSAENOTCONN = 10057;
		/// <summary>
		/// WSAENOTCONN
		/// </summary>
		[Obsolete("WSAENOTCONN")]
		public const int E10057 = WSAENOTCONN;

		/// <summary>
		/// 10058,A request to send or receive data was disallowed because the socket had already been shut down in that direction with a previous shutdown call.
		/// </summary>
		public const int WSAESHUTDOWN = 10058;
		/// <summary>
		/// WSAESHUTDOWN
		/// </summary>
		[Obsolete("WSAESHUTDOWN")]
		public const int E10058 = WSAESHUTDOWN;

		/// <summary>
		/// 10059,Too many references to some kernel object.
		/// </summary>
		public const int WSAETOOMANYREFS = 10059;
		/// <summary>
		/// WSAETOOMANYREFS
		/// </summary>
		[Obsolete("WSAETOOMANYREFS")]
		public const int E10059 = WSAETOOMANYREFS;

		/// <summary>
		/// 10060,A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
		/// </summary>
		public const int WSAETIMEDOUT = 10060;
		/// <summary>
		/// WSAETIMEDOUT
		/// </summary>
		[Obsolete("WSAETIMEDOUT")]
		public const int E10060 = WSAETIMEDOUT;

		/// <summary>
		/// 10061,No connection could be made because the target machine actively refused it.
		/// </summary>
		public const int WSAECONNREFUSED = 10061;
		/// <summary>
		/// WSAECONNREFUSED
		/// </summary>
		[Obsolete("WSAECONNREFUSED")]
		public const int E10061 = WSAECONNREFUSED;

		/// <summary>
		/// 10062,Cannot translate name.
		/// </summary>
		public const int WSAELOOP = 10062;
		/// <summary>
		/// WSAELOOP
		/// </summary>
		[Obsolete("WSAELOOP")]
		public const int E10062 = WSAELOOP;

		/// <summary>
		/// 10063,Name component or name was too long.
		/// </summary>
		public const int WSAENAMETOOLONG = 10063;
		/// <summary>
		/// WSAENAMETOOLONG
		/// </summary>
		[Obsolete("WSAENAMETOOLONG")]
		public const int E10063 = WSAENAMETOOLONG;

		/// <summary>
		/// 10064,A socket operation failed because the destination host was down.
		/// </summary>
		public const int WSAEHOSTDOWN = 10064;
		/// <summary>
		/// WSAEHOSTDOWN
		/// </summary>
		[Obsolete("WSAEHOSTDOWN")]
		public const int E10064 = WSAEHOSTDOWN;

		/// <summary>
		/// 10065,A socket operation was attempted to an unreachable host.
		/// </summary>
		public const int WSAEHOSTUNREACH = 10065;
		/// <summary>
		/// WSAEHOSTUNREACH
		/// </summary>
		[Obsolete("WSAEHOSTUNREACH")]
		public const int E10065 = WSAEHOSTUNREACH;

		/// <summary>
		/// 10066,Cannot remove a directory that is not empty.
		/// </summary>
		public const int WSAENOTEMPTY = 10066;
		/// <summary>
		/// WSAENOTEMPTY
		/// </summary>
		[Obsolete("WSAENOTEMPTY")]
		public const int E10066 = WSAENOTEMPTY;

		/// <summary>
		/// 10067,A Windows Sockets implementation may have a limit on the number of applications that may use it simultaneously.
		/// </summary>
		public const int WSAEPROCLIM = 10067;
		/// <summary>
		/// WSAEPROCLIM
		/// </summary>
		[Obsolete("WSAEPROCLIM")]
		public const int E10067 = WSAEPROCLIM;

		/// <summary>
		/// 10068,Ran out of quota.
		/// </summary>
		public const int WSAEUSERS = 10068;
		/// <summary>
		/// WSAEUSERS
		/// </summary>
		[Obsolete("WSAEUSERS")]
		public const int E10068 = WSAEUSERS;

		/// <summary>
		/// 10069,Ran out of disk quota.
		/// </summary>
		public const int WSAEDQUOT = 10069;
		/// <summary>
		/// WSAEDQUOT
		/// </summary>
		[Obsolete("WSAEDQUOT")]
		public const int E10069 = WSAEDQUOT;

		/// <summary>
		/// 10070,File handle reference is no longer available.
		/// </summary>
		public const int WSAESTALE = 10070;
		/// <summary>
		/// WSAESTALE
		/// </summary>
		[Obsolete("WSAESTALE")]
		public const int E10070 = WSAESTALE;

		/// <summary>
		/// 10071,Item is not available locally.
		/// </summary>
		public const int WSAEREMOTE = 10071;
		/// <summary>
		/// WSAEREMOTE
		/// </summary>
		[Obsolete("WSAEREMOTE")]
		public const int E10071 = WSAEREMOTE;

		/// <summary>
		/// 10091,WSAStartup cannot function at this time because the underlying system it uses to provide network services is currently unavailable.
		/// </summary>
		public const int WSASYSNOTREADY = 10091;
		/// <summary>
		/// WSASYSNOTREADY
		/// </summary>
		[Obsolete("WSASYSNOTREADY")]
		public const int E10091 = WSASYSNOTREADY;

		/// <summary>
		/// 10092,The Windows Sockets version requested is not supported.
		/// </summary>
		public const int WSAVERNOTSUPPORTED = 10092;
		/// <summary>
		/// WSAVERNOTSUPPORTED
		/// </summary>
		[Obsolete("WSAVERNOTSUPPORTED")]
		public const int E10092 = WSAVERNOTSUPPORTED;

		/// <summary>
		/// 10093,Either the application has not called WSAStartup, or WSAStartup failed.
		/// </summary>
		public const int WSANOTINITIALISED = 10093;
		/// <summary>
		/// WSANOTINITIALISED
		/// </summary>
		[Obsolete("WSANOTINITIALISED")]
		public const int E10093 = WSANOTINITIALISED;

		/// <summary>
		/// 10101,Returned by WSARecv or WSARecvFrom to indicate the remote party has initiated a graceful shutdown sequence.
		/// </summary>
		public const int WSAEDISCON = 10101;
		/// <summary>
		/// WSAEDISCON
		/// </summary>
		[Obsolete("WSAEDISCON")]
		public const int E10101 = WSAEDISCON;

		/// <summary>
		/// 10102,No more results can be returned by WSALookupServiceNext.
		/// </summary>
		public const int WSAENOMORE = 10102;
		/// <summary>
		/// WSAENOMORE
		/// </summary>
		[Obsolete("WSAENOMORE")]
		public const int E10102 = WSAENOMORE;

		/// <summary>
		/// 10103,A call to WSALookupServiceEnd was made while this call was still processing. The call has been canceled.
		/// </summary>
		public const int WSAECANCELLED = 10103;
		/// <summary>
		/// WSAECANCELLED
		/// </summary>
		[Obsolete("WSAECANCELLED")]
		public const int E10103 = WSAECANCELLED;

		/// <summary>
		/// 10104,The procedure call table is invalid.
		/// </summary>
		public const int WSAEINVALIDPROCTABLE = 10104;
		/// <summary>
		/// WSAEINVALIDPROCTABLE
		/// </summary>
		[Obsolete("WSAEINVALIDPROCTABLE")]
		public const int E10104 = WSAEINVALIDPROCTABLE;

		/// <summary>
		/// 10105,The requested service provider is invalid.
		/// </summary>
		public const int WSAEINVALIDPROVIDER = 10105;
		/// <summary>
		/// WSAEINVALIDPROVIDER
		/// </summary>
		[Obsolete("WSAEINVALIDPROVIDER")]
		public const int E10105 = WSAEINVALIDPROVIDER;

		/// <summary>
		/// 10106,The requested service provider could not be loaded or initialized.
		/// </summary>
		public const int WSAEPROVIDERFAILEDINIT = 10106;
		/// <summary>
		/// WSAEPROVIDERFAILEDINIT
		/// </summary>
		[Obsolete("WSAEPROVIDERFAILEDINIT")]
		public const int E10106 = WSAEPROVIDERFAILEDINIT;

		/// <summary>
		/// 10107,A system call has failed.
		/// </summary>
		public const int WSASYSCALLFAILURE = 10107;
		/// <summary>
		/// WSASYSCALLFAILURE
		/// </summary>
		[Obsolete("WSASYSCALLFAILURE")]
		public const int E10107 = WSASYSCALLFAILURE;

		/// <summary>
		/// 10108,No such service is known. The service cannot be found in the specified name space.
		/// </summary>
		public const int WSASERVICE_NOT_FOUND = 10108;
		/// <summary>
		/// WSASERVICE_NOT_FOUND
		/// </summary>
		[Obsolete("WSASERVICE_NOT_FOUND")]
		public const int E10108 = WSASERVICE_NOT_FOUND;

		/// <summary>
		/// 10109,The specified class was not found.
		/// </summary>
		public const int WSATYPE_NOT_FOUND = 10109;
		/// <summary>
		/// WSATYPE_NOT_FOUND
		/// </summary>
		[Obsolete("WSATYPE_NOT_FOUND")]
		public const int E10109 = WSATYPE_NOT_FOUND;

		/// <summary>
		/// 10110,No more results can be returned by WSALookupServiceNext.
		/// </summary>
		public const int WSA_E_NO_MORE = 10110;
		/// <summary>
		/// WSA_E_NO_MORE
		/// </summary>
		[Obsolete("WSA_E_NO_MORE")]
		public const int E10110 = WSA_E_NO_MORE;

		/// <summary>
		/// 10111,A call to WSALookupServiceEnd was made while this call was still processing. The call has been canceled.
		/// </summary>
		public const int WSA_E_CANCELLED = 10111;
		/// <summary>
		/// WSA_E_CANCELLED
		/// </summary>
		[Obsolete("WSA_E_CANCELLED")]
		public const int E10111 = WSA_E_CANCELLED;

		/// <summary>
		/// 10112,A database query failed because it was actively refused.
		/// </summary>
		public const int WSAEREFUSED = 10112;
		/// <summary>
		/// WSAEREFUSED
		/// </summary>
		[Obsolete("WSAEREFUSED")]
		public const int E10112 = WSAEREFUSED;

		/// <summary>
		/// 11001,No such host is known.
		/// </summary>
		public const int WSAHOST_NOT_FOUND = 11001;
		/// <summary>
		/// WSAHOST_NOT_FOUND
		/// </summary>
		[Obsolete("WSAHOST_NOT_FOUND")]
		public const int E11001 = WSAHOST_NOT_FOUND;

		/// <summary>
		/// 11002,This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server.
		/// </summary>
		public const int WSATRY_AGAIN = 11002;
		/// <summary>
		/// WSATRY_AGAIN
		/// </summary>
		[Obsolete("WSATRY_AGAIN")]
		public const int E11002 = WSATRY_AGAIN;

		/// <summary>
		/// 11003,A non-recoverable error occurred during a database lookup.
		/// </summary>
		public const int WSANO_RECOVERY = 11003;
		/// <summary>
		/// WSANO_RECOVERY
		/// </summary>
		[Obsolete("WSANO_RECOVERY")]
		public const int E11003 = WSANO_RECOVERY;

		/// <summary>
		/// 11004,The requested name is valid, but no data of the requested type was found.
		/// </summary>
		public const int WSANO_DATA = 11004;
		/// <summary>
		/// WSANO_DATA
		/// </summary>
		[Obsolete("WSANO_DATA")]
		public const int E11004 = WSANO_DATA;

		/// <summary>
		/// 11005,At least one reserve has arrived.
		/// </summary>
		public const int WSA_QOS_RECEIVERS = 11005;
		/// <summary>
		/// WSA_QOS_RECEIVERS
		/// </summary>
		[Obsolete("WSA_QOS_RECEIVERS")]
		public const int E11005 = WSA_QOS_RECEIVERS;

		/// <summary>
		/// 11006,At least one path has arrived.
		/// </summary>
		public const int WSA_QOS_SENDERS = 11006;
		/// <summary>
		/// WSA_QOS_SENDERS
		/// </summary>
		[Obsolete("WSA_QOS_SENDERS")]
		public const int E11006 = WSA_QOS_SENDERS;

		/// <summary>
		/// 11007,There are no senders.
		/// </summary>
		public const int WSA_QOS_NO_SENDERS = 11007;
		/// <summary>
		/// WSA_QOS_NO_SENDERS
		/// </summary>
		[Obsolete("WSA_QOS_NO_SENDERS")]
		public const int E11007 = WSA_QOS_NO_SENDERS;

		/// <summary>
		/// 11008,There are no receivers.
		/// </summary>
		public const int WSA_QOS_NO_RECEIVERS = 11008;
		/// <summary>
		/// WSA_QOS_NO_RECEIVERS
		/// </summary>
		[Obsolete("WSA_QOS_NO_RECEIVERS")]
		public const int E11008 = WSA_QOS_NO_RECEIVERS;

		/// <summary>
		/// 11009,Reserve has been confirmed.
		/// </summary>
		public const int WSA_QOS_REQUEST_CONFIRMED = 11009;
		/// <summary>
		/// WSA_QOS_REQUEST_CONFIRMED
		/// </summary>
		[Obsolete("WSA_QOS_REQUEST_CONFIRMED")]
		public const int E11009 = WSA_QOS_REQUEST_CONFIRMED;

		/// <summary>
		/// 11010,Error due to lack of resources.
		/// </summary>
		public const int WSA_QOS_ADMISSION_FAILURE = 11010;
		/// <summary>
		/// WSA_QOS_ADMISSION_FAILURE
		/// </summary>
		[Obsolete("WSA_QOS_ADMISSION_FAILURE")]
		public const int E11010 = WSA_QOS_ADMISSION_FAILURE;

		/// <summary>
		/// 11011,Rejected for administrative reasons - bad credentials.
		/// </summary>
		public const int WSA_QOS_POLICY_FAILURE = 11011;
		/// <summary>
		/// WSA_QOS_POLICY_FAILURE
		/// </summary>
		[Obsolete("WSA_QOS_POLICY_FAILURE")]
		public const int E11011 = WSA_QOS_POLICY_FAILURE;

		/// <summary>
		/// 11012,Unknown or conflicting style.
		/// </summary>
		public const int WSA_QOS_BAD_STYLE = 11012;
		/// <summary>
		/// WSA_QOS_BAD_STYLE
		/// </summary>
		[Obsolete("WSA_QOS_BAD_STYLE")]
		public const int E11012 = WSA_QOS_BAD_STYLE;

		/// <summary>
		/// 11013,Problem with some part of the filterspec or providerspecific buffer in general.
		/// </summary>
		public const int WSA_QOS_BAD_OBJECT = 11013;
		/// <summary>
		/// WSA_QOS_BAD_OBJECT
		/// </summary>
		[Obsolete("WSA_QOS_BAD_OBJECT")]
		public const int E11013 = WSA_QOS_BAD_OBJECT;

		/// <summary>
		/// 11014,Problem with some part of the flowspec.
		/// </summary>
		public const int WSA_QOS_TRAFFIC_CTRL_ERROR = 11014;
		/// <summary>
		/// WSA_QOS_TRAFFIC_CTRL_ERROR
		/// </summary>
		[Obsolete("WSA_QOS_TRAFFIC_CTRL_ERROR")]
		public const int E11014 = WSA_QOS_TRAFFIC_CTRL_ERROR;

		/// <summary>
		/// 11015,General QOS error.
		/// </summary>
		public const int WSA_QOS_GENERIC_ERROR = 11015;
		/// <summary>
		/// WSA_QOS_GENERIC_ERROR
		/// </summary>
		[Obsolete("WSA_QOS_GENERIC_ERROR")]
		public const int E11015 = WSA_QOS_GENERIC_ERROR;

		/// <summary>
		/// 11016,An invalid or unrecognized service type was found in the flowspec.
		/// </summary>
		public const int WSA_QOS_ESERVICETYPE = 11016;
		/// <summary>
		/// WSA_QOS_ESERVICETYPE
		/// </summary>
		[Obsolete("WSA_QOS_ESERVICETYPE")]
		public const int E11016 = WSA_QOS_ESERVICETYPE;

		/// <summary>
		/// 11017,An invalid or inconsistent flowspec was found in the QOS structure.
		/// </summary>
		public const int WSA_QOS_EFLOWSPEC = 11017;
		/// <summary>
		/// WSA_QOS_EFLOWSPEC
		/// </summary>
		[Obsolete("WSA_QOS_EFLOWSPEC")]
		public const int E11017 = WSA_QOS_EFLOWSPEC;

		/// <summary>
		/// 11018,Invalid QOS provider-specific buffer.
		/// </summary>
		public const int WSA_QOS_EPROVSPECBUF = 11018;
		/// <summary>
		/// WSA_QOS_EPROVSPECBUF
		/// </summary>
		[Obsolete("WSA_QOS_EPROVSPECBUF")]
		public const int E11018 = WSA_QOS_EPROVSPECBUF;

		/// <summary>
		/// 11019,An invalid QOS filter style was used.
		/// </summary>
		public const int WSA_QOS_EFILTERSTYLE = 11019;
		/// <summary>
		/// WSA_QOS_EFILTERSTYLE
		/// </summary>
		[Obsolete("WSA_QOS_EFILTERSTYLE")]
		public const int E11019 = WSA_QOS_EFILTERSTYLE;

		/// <summary>
		/// 11020,An invalid QOS filter type was used.
		/// </summary>
		public const int WSA_QOS_EFILTERTYPE = 11020;
		/// <summary>
		/// WSA_QOS_EFILTERTYPE
		/// </summary>
		[Obsolete("WSA_QOS_EFILTERTYPE")]
		public const int E11020 = WSA_QOS_EFILTERTYPE;

		/// <summary>
		/// 11021,An incorrect number of QOS FILTERSPECs were specified in the FLOWDESCRIPTOR.
		/// </summary>
		public const int WSA_QOS_EFILTERCOUNT = 11021;
		/// <summary>
		/// WSA_QOS_EFILTERCOUNT
		/// </summary>
		[Obsolete("WSA_QOS_EFILTERCOUNT")]
		public const int E11021 = WSA_QOS_EFILTERCOUNT;

		/// <summary>
		/// 11022,An object with an invalid ObjectLength field was specified in the QOS provider-specific buffer.
		/// </summary>
		public const int WSA_QOS_EOBJLENGTH = 11022;
		/// <summary>
		/// WSA_QOS_EOBJLENGTH
		/// </summary>
		[Obsolete("WSA_QOS_EOBJLENGTH")]
		public const int E11022 = WSA_QOS_EOBJLENGTH;

		/// <summary>
		/// 11023,An incorrect number of flow descriptors was specified in the QOS structure.
		/// </summary>
		public const int WSA_QOS_EFLOWCOUNT = 11023;
		/// <summary>
		/// WSA_QOS_EFLOWCOUNT
		/// </summary>
		[Obsolete("WSA_QOS_EFLOWCOUNT")]
		public const int E11023 = WSA_QOS_EFLOWCOUNT;

		/// <summary>
		/// 11024,An unrecognized object was found in the QOS provider-specific buffer.
		/// </summary>
		public const int WSA_QOS_EUNKOWNPSOBJ = 11024;
		/// <summary>
		/// WSA_QOS_EUNKOWNPSOBJ
		/// </summary>
		[Obsolete("WSA_QOS_EUNKOWNPSOBJ")]
		public const int E11024 = WSA_QOS_EUNKOWNPSOBJ;

		/// <summary>
		/// 11025,An invalid policy object was found in the QOS provider-specific buffer.
		/// </summary>
		public const int WSA_QOS_EPOLICYOBJ = 11025;
		/// <summary>
		/// WSA_QOS_EPOLICYOBJ
		/// </summary>
		[Obsolete("WSA_QOS_EPOLICYOBJ")]
		public const int E11025 = WSA_QOS_EPOLICYOBJ;

		/// <summary>
		/// 11026,An invalid QOS flow descriptor was found in the flow descriptor list.
		/// </summary>
		public const int WSA_QOS_EFLOWDESC = 11026;
		/// <summary>
		/// WSA_QOS_EFLOWDESC
		/// </summary>
		[Obsolete("WSA_QOS_EFLOWDESC")]
		public const int E11026 = WSA_QOS_EFLOWDESC;

		/// <summary>
		/// 11027,An invalid or inconsistent flowspec was found in the QOS provider specific buffer.
		/// </summary>
		public const int WSA_QOS_EPSFLOWSPEC = 11027;
		/// <summary>
		/// WSA_QOS_EPSFLOWSPEC
		/// </summary>
		[Obsolete("WSA_QOS_EPSFLOWSPEC")]
		public const int E11027 = WSA_QOS_EPSFLOWSPEC;

		/// <summary>
		/// 11028,An invalid FILTERSPEC was found in the QOS provider-specifi
		/// </summary>
		public const int WSA_QOS_EPSFILTERSPEC = 11028;
		/// <summary>
		/// WSA_QOS_EPSFILTERSPEC
		/// </summary>
		[Obsolete("WSA_QOS_EPSFILTERSPEC")]
		public const int E11028 = WSA_QOS_EPSFILTERSPEC;

		/// <summary>
		/// 11029,An invalid shape discard mode object was found in the QOS provider specific buffer.
		/// </summary>
		public const int WSA_QOS_ESDMODEOBJ = 11029;
		/// <summary>
		/// WSA_QOS_ESDMODEOBJ
		/// </summary>
		[Obsolete("WSA_QOS_ESDMODEOBJ")]
		public const int E11029 = WSA_QOS_ESDMODEOBJ;

		/// <summary>
		/// 11030,An invalid shaping rate object was found in the QOS provider-specific buffer.
		/// </summary>
		public const int WSA_QOS_ESHAPERATEOBJ = 11030;
		/// <summary>
		/// WSA_QOS_ESHAPERATEOBJ
		/// </summary>
		[Obsolete("WSA_QOS_ESHAPERATEOBJ")]
		public const int E11030 = WSA_QOS_ESHAPERATEOBJ;

		/// <summary>
		/// 11031,A reserved policy element was found in the QOS provider-specific buffer.
		/// </summary>
		public const int WSA_QOS_RESERVED_PETYPE = 11031;
		/// <summary>
		/// WSA_QOS_RESERVED_PETYPE
		/// </summary>
		[Obsolete("WSA_QOS_RESERVED_PETYPE")]
		public const int E11031 = WSA_QOS_RESERVED_PETYPE;

		/// <summary>
		/// 11032,No such host is known securely.
		/// </summary>
		public const int WSA_SECURE_HOST_NOT_FOUND = 11032;
		/// <summary>
		/// WSA_SECURE_HOST_NOT_FOUND
		/// </summary>
		[Obsolete("WSA_SECURE_HOST_NOT_FOUND")]
		public const int E11032 = WSA_SECURE_HOST_NOT_FOUND;

		/// <summary>
		/// 11033,Name based IPSEC policy could not be added.
		/// </summary>
		public const int WSA_IPSEC_NAME_POLICY_ERROR = 11033;
		/// <summary>
		/// WSA_IPSEC_NAME_POLICY_ERROR
		/// </summary>
		[Obsolete("WSA_IPSEC_NAME_POLICY_ERROR")]
		public const int E11033 = WSA_IPSEC_NAME_POLICY_ERROR;

		#endregion // defined(WSABASEERR)

		public static Exception GetException()
		{
			return ERROR.GetException(0, false);
		}
		public static Exception GetException(bool throwError)
		{
			return ERROR.GetException(0, throwError);
		}
		public static Exception GetException(this int error)
		{
			return ERROR.GetException(error, false);
		}
		public static Exception GetException(this int error, bool throwError)
		{
			if (error == 0)
				error = Marshal.GetLastWin32Error();
			if (error == 0)
				return null;

			var e = Marshal.GetExceptionForHR(error);
			if (e == null)
				e = new PickGold.Exceptions.RuntimeException(ERROR.GetErrorDescription(error), error);

			if (throwError)
				throw e;

			return e;
		}

		public static string GetErrorDescription(this int error)
		{
			var type = MethodBase.GetCurrentMethod().DeclaringType;
			var text = type.FullName;
			var rns = type.Assembly.GetManifestResourceNames();
			foreach (var rn in rns)
			{
				if (string.Compare(rn, text, StringComparison.OrdinalIgnoreCase) == 0 || rn.StartsWith(text + '.', StringComparison.OrdinalIgnoreCase))
				{
					text = rn;
					break;
				}
			}
			var rs = type.Assembly.GetManifestResourceStream(text);
			if (rs == null)
				return error.ToString();

			var xml = new XmlDocument();
			try
			{
				xml.Load(rs);
			}
			finally
			{
				rs.Close();
				rs.Dispose();
			}
			text = string.Format("//*[@{0}={1}]", xml.DocumentElement.Name, error);
			var xn = xml.SelectSingleNode(text);
			if (xn == null)
				return error.ToString();

			if (xn.HasChildNodes)
				return xn.FirstChild.Value;

			return xn.Value;
		}

		/*
〖1829〗-RPC 承接体的版本不兼容。 
 〖1830〗-RPC 管道对象无效或已损坏。 
 〖1831〗-试图在 RPC 管道物件上进行无效操作。 
 〖1832〗-不被支持的 RPC 管道版本。 
 〖1898〗-找不到该组成员。 
 〖1899〗-无法创建终结点映射表数据库项。 
 〖1900〗-对象通用唯一标识 (UUID) 为 nil UUID。 
 〖1901〗-指定的时间无效。 
 〖1902〗-指定的格式名称无效。 
 〖1903〗-指定的格式大小无效。 
 〖1904〗-指定的打印机句柄正等候在 
 〖1905〗-已删除指定的打印机。 
 〖1906〗-打印机的状态无效。 
 〖1907〗-在第一次登录之前，必须更改用户密码。 
 〖1908〗-找不到此域的域控制器。 
 〖1909〗-引用的帐户当前已锁定，且可能无法登录。 
 〖1910〗-没有发现指定的此对象导出者 
 〖1911〗-没有发现指定的对象。 
 〖1912〗-没有发现指定的对象解析器。 
 〖1913〗-一些待发数据仍停留在请求缓冲区内。 
 〖1914〗-无效的异步远程过程调用句柄。 
 〖1915〗-这个操作的异步 RPC 调用句柄不正确。 
 〖1916〗-RPC 管道对象已经关闭。 
 〖1917〗-在 RPC 调用完成之前全部的管道都已处理完成。 
 〖1918〗-没有其他可用的数据来自 RPC 管道。 
 〖1919〗-这个机器没有可用的站点名。 
 〖1920〗-系统无法访问此文件。 
 〖1921〗-系统无法辨识文件名。 
 〖1922〗-项目不是所要的类型。 
 〖1923〗-无法将所有对象的 UUID 导出到指定的项。 
 〖1924〗-无法将界面导出到指定的项。 
 〖1925〗-无法添加指定的配置文件项。 
 〖1926〗-无法添加指定的配置文件元素。 
 〖1927〗-无法删除指定的配置文件元素。 
 〖1928〗-无法添加组元素。 
 〖1929〗-无法删除组元素。 
 〖2000〗-无效的像素格式。 
 〖2001〗-指定的驱动程序无效。 
 〖2002〗-窗口样式或类别属性对此操作无效。 
 〖2003〗-不支持请求的图元操作。 
 〖2004〗-不支持请求的变换操作。 
 〖2005〗-不支持请求的剪切操作。 
 〖2010〗-指定的颜色管理模块无效。 
 〖2011〗-制定的颜色文件配置无效。 
 〖2012〗-找不到指定的标识。 
 〖2013〗-找不到所需的标识。 
 〖2014〗-指定的标识已经存在。 
 〖2015〗-指定的颜色文件配置与任何设备都不相关。 
 〖2016〗-找不到该指定的颜色文件配置 
 〖2017〗-指定的颜色空间无效。 
 〖2018〗-图像颜色管理没有启动。 
 〖2019〗-在删除该颜色传输时有一个错误。 
 〖2020〗-该指定的颜色传输无效。 
 〖2021〗-该指定的变换与位图的颜色空间不匹配。 
 〖2022〗-该指定的命名颜色索引在配置文件中不存在。 
 〖2102〗-没有安装工作站驱动程序。 
 〖2103〗-无法定位服务器。 
 〖2104〗-发生内部错误，网络无法访问共享内存段。 
 〖2105〗-网络资源不足。 
 〖2106〗-工作站不支持这项操作。 
 〖2107〗-设备没有连接。 
 〖2108〗-网络连接已成功，但需要提示用户输入一个不同于原始指定的密码。 
 〖2114〗-没有启动服务器服务。 
 〖2115〗-队列空。 
 〖2116〗-设备或目录不存在。 
 〖2117〗-无法在重定向的资源上执行这项操作。 
 〖2118〗-名称已经共享。 
 〖2119〗-服务器当前无法提供所需的资源。 
 〖2121〗-额外要求的项目超过允许的上限。 
 〖2122〗-对等服务只支持两个同时操作的用户 。 
 〖2123〗-API 返回缓冲区太小。
 〖2127〗-远程 API 错误。 
 〖2131〗-打开或读取配置文件时出错。 
 〖2136〗-发生一般网络错误。 
 〖2137〗-工作站服务的状态不一致。重新启动工作站服务之前，请先重新启动计算机。 
 〖2138〗-工作站服务没有启动。 
 〖2139〗-所需信息不可用。 
 〖2140〗-发生 Windows 2000 内部错误。 
 〖2141〗-服务器没有设置事务处理。 
 〖2142〗-远程服务器不支持请求的 API。 
 〖2143〗-事件名无效。 
 〖2144〗-网络上已经有此计算机名。请更名后重新启动。 
 〖2146〗-配置信息中找不到指定的组件。 
 〖2147〗-配置信息中找不到指定的参数。 
 〖2149〗-配置文件中有一个命令行太长。 
 〖2150〗-打印机不存在。 
 〖2151〗-打印作业不存在。 
 〖2152〗-打印机目标找不到。 
 〖2153〗-打印机目标已经存在。 
 〖2154〗-打印机队列已经存在。 
 〖2155〗-无法添加其它的打印机。 
 〖2156〗-无法添加其它的打印作业。 
 〖2157〗-无法添加其它的打印机目标。 
 〖2158〗-此打印机目标处于空闲中，不接受控制操作。 
 〖2159〗-此“打印机目标请求”包含无效的控制函数。 
 〖2160〗-打印处理程序没有响应。 
 〖2161〗-后台处理程序没有运行。 
 〖2162〗-打印目标当前的状况，无法执行这项操作。 
 〖2163〗-打印机队列当前的状况，无法执行这项操作。 
 〖2164〗-打印作业当前的状况，无法执行这项操作。 
 〖2165〗-无法为后台处理程序分配内存。 
 〖2166〗-设备驱动程序不存在。 
 〖2167〗-打印处理程序不支持这种数据类型。 
 〖2168〗-没有安装打印处理程序。 
 〖2180〗-锁定服务数据库。 
 〖2181〗-服务表已满。 
 〖2182〗-请求的服务已经启动。 
 〖2183〗-这项服务没有响应控制操作。 
 〖2184〗-服务仍未启动。 
 〖2185〗-服务名无效。 
 〖2186〗-服务没有响应控制功能。 
 〖2187〗-服务控制处于忙碌状态。 
 〖2188〗-配置文件包含无效的服务程序名。 
 〖2189〗-在当前的状况下无法控制服务。 
 〖2190〗-服务异常终止。 
 〖2191〗-这项服务无法接受请求的 "暂停" 或 "停止" 操作。 
 〖2192〗-服务控制“计划程序”在“计划表”中找不到服务名。 
 〖2193〗-无法读取服务控制计划程序管道。 
 〖2194〗-无法创建新服务的线程。 
 〖2200〗-此工作站已经登录到局域网。 
 〖2201〗-工作站没有登录到局域网。 
 〖2202〗-指定的用户名无效。 
 〖2203〗-密码参数无效。 
 〖2204〗-登录处理器没有添加消息别名。 
 〖2205〗-登录处理器没有添加消息别名。 
 〖2206〗-注销处理器没有删除消息别名。 
 〖2207〗-注销处理器没有删除消息别名。 
 〖2209〗-暂停网络登录。 
 〖2210〗-中心登录服务器发生冲突。 
 〖2211〗-服务器没有设置正确的用户路径。 
 〖2212〗-加载或运行登录脚本时出错。 
 〖2214〗-没有指定登录服务器，计算机的登录状态是单机操作。 
 〖2215〗-登录服务器找不到。 
 〖2216〗-此计算机已经有一个登录域。 
 〖2217〗-登录服务器无法验证登录。 
 〖2219〗-安全数据库找不到。 
 〖2220〗-组名找不到。 
 〖2221〗-用户名找不到。 
 〖2222〗-资源名找不到。 
 〖2223〗-组已经存在。 
 〖2224〗-帐户已经存在。 
 〖2225〗-资源使用权限清单已经存在。 
 〖2226〗-此操作只能在该域的主域控制器上执行。
 〖2227〗-安全数据库没有启动。 
 〖2228〗-用户帐户数据库中的名称太多。 
 〖2229〗-磁盘 I/O 失败。 
 〖2230〗-已经超过每个资源 64 个项目的限制。 
 〖2231〗-不得删除带会话的用户。 
 〖2232〗-上层目录找不到。 
 〖2233〗-无法添加到安全数据库会话高速缓存段。 
 〖2234〗-这项操作不能在此特殊的组上执行。 
 〖2235〗-用户帐户数据库会话高速缓存没有记录此用户。 
 〖2236〗-用户已经属于此组。 
 〖2237〗-用户不属于此组。 
 〖2238〗-此用户帐户尚未定义。 
 〖2239〗-此用户帐户已过期。 
 〖2240〗-此用户不得从此工作站登录网络。 
 〖2241〗-这时候不允许用户登录网络。 
 〖2242〗-此用户的密码已经过期。 
 〖2243〗-此用户的密码无法更改。 
 〖2244〗-现在无法使用此密码。 
 〖2245〗-密码不满足密码策略的需要。检查最小密码长度、密码复杂性和密码历史的需求。 
 〖2246〗-此用户的密码最近才启用，现在不能更改。 
 〖2247〗-安全数据库已损坏。 
 〖2248〗-不需要更新此副本复制的网络/本地安全数据库。 
 〖2249〗-此副本复制的数据库已过时；请同步处理其中的数据。 
 〖2250〗-此网络连接不存在。 
 〖2251〗-此 asg_type 无效。 
 〖2252〗-此设备当前正在共享中。 
 〖2270〗-计算机名无法作为消息别名添加。网络上可能已经有此名称。 
 〖2271〗-信使服务已经启动。 
 〖2272〗-信使服务启动失败。 
 〖2273〗-网络上找不到此消息别名。 
 〖2274〗-此消息别名已经转发出去。 
 〖2275〗-已经添加了此消息别名，但是仍被转发。 
 〖2276〗-此消息别名已在本地存在。 
 〖2277〗-添加的消息别名已经超过数目上限。 
 〖2278〗-无法删除计算机名。 
 〖2279〗-消息无法转发回到同一个工作站。 
 〖2280〗-域消息处理器出错。 
 〖2281〗-消息已经发送出去，但是收件者已经暂停信使服务。 
 〖2282〗-消息已经发送出去，但尚未收到。 
 〖2283〗-消息别名当前正在使用中。请稍候片刻再试。 
 〖2284〗-信使服务尚未启动。 
 〖2285〗-该名称不在本地计算机上。 
 〖2286〗-网络上找不到转发的消息别名。 
 〖2287〗-远程通讯站的消息别名表已经满了。 
 〖2288〗-此别名的消息当前没有在转发中。 
 〖2289〗-广播的消息被截断。 
 〖2294〗-设备名无效。 
 〖2295〗-写入出错。 
 〖2297〗-网络上的消息别名重复。 
 〖2298〗-此消息别名会在稍后删除。 
 〖2299〗-没有从所有的网络删除消息别名。 
 〖2300〗-这项操作无法在使用多种网络的计算机上执行。 
 〖2310〗-此共享的资源不存在。 
 〖2311〗-设备没有共享。 
 〖2312〗-带此计算机名的会话不存在。 
 〖2314〗-没有用此识别号打开的文件。 
 〖2315〗-执行远程管理命令失败。 
 〖2316〗-打开远程临时文件失败。 
 〖2317〗-从远程管理命令返回的数据已经被截断成 64K。 
 〖2318〗-此设备无法同时共享为后台处理资源和非后台处理资源。 
 〖2319〗-服务器清单中的信息可能不正确 
 〖2320〗-计算机在此域未处于活动状态 
 〖2321〗-在删除共享之前，需要将该共享从分布式文件系统中删除。 
 〖2331〗-无法在此设备执行这项操作 
 〖2332〗-此设备无法共享。 
 〖2333〗-此设备未打开。 
 〖2334〗-此设备名清单无效。 
 〖2335〗-队列优先级无效。
 〖2337〗-没有任何共享的通讯设备。 
 〖2338〗-指定的队列不存在。 
 〖2340〗-此设备清单无效。 
 〖2341〗-请求的设备无效。 
 〖2342〗-后台处理程序正在使用此设备。 
 〖2343〗-此设备已经被当成通讯设备来使用。 
 〖2351〗-此计算机名无效。 
 〖2354〗-指定的字符串及前缀太长。 
 〖2356〗-此路径组成部分无效。 
 〖2357〗-无法判断输入类型。 
 〖2362〗-类型缓冲区不够大。 
 〖2370〗-配置文件不得超过 64K。 
 〖2371〗-初始偏移量越界。 
 〖2372〗-系统无法删除当前到网络资源的连接。 
 〖2373〗-系统无法分析此文件中的命令行。 
 〖2374〗-加载配置文件时出错。\ 
 〖2375〗-保存配置文件时出错，只部份地保存了配置文件。 
 〖2378〗-此日志文件在前后两次读取之间已经发生变化。 
 〖2380〗-资源路径不可以是目录。 
 〖2381〗-资源路径无效。 
 〖2382〗-目标路径无效。 
 〖2383〗-源路径及目标路径分属不同的服务器。 
 〖2385〗-请求的 Run 服务器现在暂停。 
 〖2389〗-与 Run 服务器通讯时出错。 
 〖2391〗-启动后台处理时出错。 
 〖2392〗-找不到您连接的共享资源。 
 〖2400〗-LAN 适配器号码无效。 
 〖2401〗-此网络连接有文件打开或请求挂起。 
 〖2402〗-使用中的连接仍存在。 
 〖2403〗-此共享名或密码无效。 
 〖2404〗-设备正由活动进程使用，无法断开。 
 〖2405〗-此驱动器号已在本地使用。 
 〖2430〗-指定的客户已经在指定的事件注册。 
 〖2431〗-警报表已满。 
 〖2432〗-发出的警报名称无效或不存在。 
 〖2433〗-警报接收者无效。 
 〖2434〗-用户的登录时间长短不再合法。所以已经删除用户与该服务器的会话。 
 〖2440〗-日志文件中没有请求的记录号。 
 〖2450〗-用户帐户数据库没有正确配置。 
 〖2451〗-当 Netlogon 服务正在运行时，不允许执行这项操作。 
 〖2452〗-这项操作无法在最后的管理帐户上执行。 
 〖2453〗-找不到此域的域控制器。 
 〖2454〗-无法设置此用户的登录信息。 
 〖2455〗-Netlogon 服务尚未启动。 
 〖2456〗-无法添加到用户帐户数据库。 
 〖2457〗-此服务器的时钟与主域控制器的时钟不一致。 
 〖2458〗-检测到密码不匹配。 
 〖2460〗-服务器识别码没有指定有效的服务器。 
 〖2461〗-会话标识没有指定有效的会话。 
 〖2462〗-连接识别码没有指定有效的连接。 
 〖2463〗-可用服务器表中无法再加上其它项。 
 〖2464〗-服务器已经到了支持的会话数目上限。 
 〖2465〗-服务器已经到了支持的连接数目上限。 
 〖2466〗-服务器打开的文件到了上限，无法打开更多文件。 
 〖2467〗-这台服务器没有登记替换的服务器。 
 〖2470〗-请用低级的 API (远程管理协议)。 
 〖2480〗-UPS 服务无法访问 UPS 驱动程序。 
 〖2481〗-UPS 服务设置错误。 
 〖2482〗-UPS 服务无法访问指定通讯端口 (Comm Port)。 
 〖2483〗-UPS 显示线路中断或电池不足，服务没有启动。 
 〖2484〗-UPS 服务无法执行系统关机的操作。 
 〖2500〗-下面的程序返回一个 MS-DOS 错误码: 
 〖2501〗-下面的程序需要更多的内存: 
 〖2502〗-下面程序调用了不支持的 MS-DOS 函数: 
 〖2503〗-工作站无法启动。 
 〖2504〗-下面的文件已损坏。 
 〖2505〗-启动块定义文件中没有指定引导程序。
 〖2506〗-NetBIOS 返回错误: NCB 及 SMB 数据转储。 
 〖2507〗-磁盘 I/O 错误。 
 〖2508〗-无法替换映像参数。 
 〖2509〗-跨越磁盘扇区范围的映像参数太多。 
 〖2510〗-不是从用 /S 格式化的 MS-DOS软盘产生的映像。 
 〖2511〗-稍后会从远程重新启动。 
 〖2512〗-无法调用远程启动服务器。 
 〖2513〗-无法连接到远程启动服务器。 
 〖2514〗-无法打开远程启动服务器上的映像文件。 
 〖2515〗-正在连接到远程启动服务器... 
 〖2516〗-正在连接到远程启动服务器... 
 〖2517〗-远程启动服务已经停止，请检测错误记录文件，查明出错的原因。 
 〖2518〗-远程启动失败，请检查错误日志文件，查明出错的原因。 
 〖2519〗-不允许第二个远程启动 (Remoteboot) 资源连接。 
 〖2550〗-浏览服务设置成 MaintainServerList=No。

 〖0〗-操作成功完成。
 〖1〗-功能错误。
 〖2〗-系统找不到指定的文件。
 〖3〗-系统找不到指定的路径。
 〖4〗-系统无法打开文件。
 〖5〗-拒绝访问。
 〖6〗-句柄无效。
 〖7〗-存储控制块被损坏。
 〖8〗-存储空间不足，无法处理此命令。
 〖9〗-存储控制块地址无效。
 〖10〗-环境错误。
 〖11〗-试图加载格式错误的程序。
 〖12〗-访问码无效。
 〖13〗-数据无效。
 〖14〗-存储器不足，无法完成此操作。
 〖15〗-系统找不到指定的驱动器。
 〖16〗-无法删除目录。
 〖17〗-系统无法将文件移到不同的驱动器。
 〖18〗-没有更多文件。
 〖19〗-介质受写入保护。
 〖20〗-系统找不到指定的设备。 
 〖21〗-设备未就绪。 
 〖22〗-设备不识别此命令。 
 〖23〗-数据错误 (循环冗余检查)。 
 〖24〗-程序发出命令，但命令长度不正确。 
 〖25〗-驱动器无法找出磁盘上特定区域或磁道的位置。 
 〖26〗-无法访问指定的磁盘或软盘。 
 〖27〗-驱动器找不到请求的扇区。 
 〖28〗-打印机缺纸。 
 〖29〗-系统无法写入指定的设备。 
 〖30〗-系统无法从指定的设备上读取。 
 〖31〗-连到系统上的设备没有发挥作用。 
 〖32〗-进程无法访问文件，因为另一个程序正在使用此文件。 
 〖33〗-进程无法访问文件，因为另一个程序已锁定文件的一部分。 
 〖36〗-用来共享的打开文件过多。 
 〖38〗-到达文件结尾。 
 〖39〗-磁盘已满。
 		*/
	}

	#endregion

	#region AW

	/// <summary>
	/// [DllImport("user32")]extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags)
	/// </summary>
	public static class AW
	{
		/// <summary>
		/// 从左向右显示
		/// </summary>
		public const int HOR_POSITIVE = 0x0001;
		/// <summary>
		/// 从右向左显示
		/// </summary>
		public const int HOR_NEGATIVE = 0x0002;
		/// <summary>
		/// 从上到下显示
		/// </summary>
		public const int VER_POSITIVE = 0x0004;
		/// <summary>
		/// 从下到上显示
		/// </summary>
		public const int VER_NEGATIVE = 0x0008;
		/// <summary>
		/// 从中间向四周
		/// </summary>
		public const int CENTER = 0x0010;
		/// <summary>
		/// 
		/// </summary>
		public const int HIDE = 0x10000;
		/// <summary>
		/// 普通显示
		/// </summary>
		public const int ACTIVATE = 0x20000;
		/// <summary>
		/// 
		/// </summary>
		public const int SLIDE = 0x40000;
		/// <summary>
		/// 透明渐变显示效果
		/// </summary>
		public const int BLEND = 0x80000;
	}

	#endregion

	#region IO_REPARSE_TAG

	/// <summary>
	/// Each reparse point has a reparse tag. The reparse tag uniquely identifies the owner of that reparse point. The owner is the implementer of the file system filter driver associated with a reparse tag.
	/// http://msdn.microsoft.com/en-us/library/dd541667(v=PROT.10).aspx
	/// </summary>
	public static class IO_REPARSE_TAG
	{
		/// <summary>
		/// Reserved reparse tag value.
		/// </summary>
		public const uint RESERVED_ZERO = 0x00000000;
		/// <summary>
		/// Reserved reparse tag value.
		/// </summary>
		public const uint RESERVED_ONE = 0x00000001;
		/// <summary>
		/// Used for mount point support, specified in section http://msdn.microsoft.com/en-us/library/cc232007(v=PROT.10).aspx.
		/// </summary>
		public const uint MOUNT_POINT = 0xA0000003;		// Moiunt point or junction, see winnt.h
		/// <summary>
		/// Obsolete. Used by legacy Hierarchical Storage Manager Product.
		/// </summary>
		public const uint HSM = 0xC0000004;
		/// <summary>
		/// Obsolete. Used by legacy Hierarchical Storage Manager Product.
		/// </summary>
		public const uint HSM2 = 0x80000006;
		/// <summary>
		/// Home server drive extender.http://msdn.microsoft.com/en-us/library/d4bc551b-7aaf-4b4f-ba0e-3a75e7c528f0(v=PROT.10)#id3.
		/// </summary>
		public const uint DRIVER_EXTENDER = 0x80000005;
		/// <summary>
		/// Used by single-instance storage (SIS) filter driver. Server-side interpretation only, not meaningful over the wire.
		/// </summary>
		public const uint SIS = 0x80000007;
		/// <summary>
		/// Used by the DFS filter. The DFS is described in the Distributed File System (DFS): Referral Protocol Specification [MS-DFSC]. Server-side interpretation only, not meaningful over the wire.
		/// </summary>
		public const uint DFS = 0x8000000A;
		/// <summary>
		/// Used by the DFS filter. The DFS is described in [MS-DFSC]. Server-side interpretation only, not meaningful over the wire.
		/// </summary>
		public const uint DFSR = 0x80000012;
		/// <summary>
		/// Used by filter manager test harness.http://msdn.microsoft.com/en-us/library/d4bc551b-7aaf-4b4f-ba0e-3a75e7c528f0(v=PROT.10)#id4
		/// </summary>
		public const uint FILTER_MANAGER = 0x8000000B;
		/// <summary>
		/// Used for symbolic link support. See section http://msdn.microsoft.com/en-us/library/cc232006(v=PROT.10).aspx.
		/// </summary>
		public const uint SYMLINK = 0xA000000C;			// SYMLINK or SYMLINKD (see http://wesnerm.blogs.com/net_undocumented/2006/10/index.html)
	}

	#endregion

	public static class DFP
	{
		public const uint GET_VERSION = 0x00074080;
		public const uint SEND_DRIVE_COMMAND = 0x0007c084;
		public const uint RECEIVE_DRIVE_DATA = 0x0007c088;
	}

	public static class IDE
	{
		public const byte ATAPI_IDENTIFY = 0xA1;//  Returns ID sector for ATAPI. 
		public const byte ATA_IDENTIFY = 0xEC; //  Returns ID sector for ATA. 
	}

	#region CAP_IDE

	public static class CAP_IDE
	{
		public const byte ID_FUNCTION = 1;				// ATA ID command supported 
		public const byte ATAPI_ID = 2;					// ATAPI ID command supported 
		public const byte EXECUTE_SMART_FUNCTION = 4;	// SMART commannds supported 
	}

	#endregion

	#region FSCTL

	/// <summary>
	/// 
	/// </summary>
	public static class FSCTL
	{
		/// <summary>
		/// Command to set the reparse point data block.
		/// </summary>
		public const uint SET_REPARSE_POINT = 41;

		/// <summary>
		/// Command to get the reparse point data block.
		/// </summary>
		public const uint GET_REPARSE_POINT = 42;

		/// <summary>
		/// Command to delete the reparse point data base.
		/// </summary>
		public const uint DELETE_REPARSE_POINT = 43;

		/// <summary>
		/// Command to set the reparse point data block.
		/// </summary>
		public const uint SetReparsePoint = 0x000900A4;

		/// <summary>
		/// Command to get the reparse point data block.
		/// </summary>
		public const uint GetReparsePoint = 0x000900A8;

		/// <summary>
		/// Command to delete the reparse point data base.
		/// </summary>
		public const uint DeleteReparsePoint = 0x000900AC;

		/// <summary>
		/// Make up the control code - see CTL_CODE on ntddk.h
		/// </summary>
		/// <param name="code"></param>
		/// <returns></returns>
		public static uint GetCode(uint code)
		{
			if (code != SET_REPARSE_POINT && code != GET_REPARSE_POINT && code != DELETE_REPARSE_POINT)
				return code;

			code = FILE.DEVICE_FILE_SYSTEM << 16 | FILE.ANY_ACCESS << 14 | code << 2 | ApiUtil.METHOD_BUFFERED;
			return code;
		}
	}

	#endregion

	#region FILE_ATTRIBUTE

	/// <summary>
	/// 
	/// </summary>
	public static class FILE_ATTRIBUTE
	{
		[Flags]
		public enum E : uint
		{
			Readonly = READONLY,
			Hidden = HIDDEN,
			System = SYSTEM,
			Directory = DIRECTORY,
			Archive = ARCHIVE,
			Device = DEVICE,
			Normal = NORMAL,
			Temporary = TEMPORARY,
			SparseFile = SPARSE_FILE,
			ReparsePoint = REPARSE_POINT,
			Compressed = COMPRESSED,
			Offline = OFFLINE,
			NotContentIndexed = NOT_CONTENT_INDEXED,
			Encrypted = ENCRYPTED,
			WriteThrough = WRITE_THROUGH,
			Overlapped = OVERLAPPED,
			NoBuffering = NO_BUFFERING,
			RandomAccess = RANDOM_ACCESS,
			SequentialScan = SEQUENTIAL_SCAN,
			DeleteOnClose = DELETE_ON_CLOSE,
			BackupSemantics = BACKUP_SEMANTICS,
			PosixSemantics = POSIX_SEMANTICS,
			OpenReparsePoint = OPEN_REPARSE_POINT,
			OpenNoRecall = OPEN_NO_RECALL,
			FirstPipeInstance = FIRST_PIPE_INSTANCE,
		}

		public const uint READONLY = 0x00000001;
		public const uint HIDDEN = 0x00000002;
		public const uint SYSTEM = 0x00000004;
		public const uint DIRECTORY = 0x00000010;
		public const uint ARCHIVE = 0x00000020;
		public const uint DEVICE = 0x00000040;
		public const uint NORMAL = 0x00000080;
		public const uint TEMPORARY = 0x00000100;
		public const uint SPARSE_FILE = 0x00000200;
		public const uint REPARSE_POINT = 0x00000400;
		public const uint COMPRESSED = 0x00000800;
		public const uint OFFLINE = 0x00001000;
		public const uint NOT_CONTENT_INDEXED = 0x00002000;
		public const uint ENCRYPTED = 0x00004000;
		public const uint WRITE_THROUGH = 0x80000000;
		public const uint OVERLAPPED = 0x40000000;
		public const uint NO_BUFFERING = 0x20000000;
		public const uint RANDOM_ACCESS = 0x10000000;
		public const uint SEQUENTIAL_SCAN = 0x08000000;
		public const uint DELETE_ON_CLOSE = 0x04000000;
		public const uint BACKUP_SEMANTICS = 0x02000000;
		public const uint POSIX_SEMANTICS = 0x01000000;
		public const uint OPEN_REPARSE_POINT = 0x00200000;
		public const uint OPEN_NO_RECALL = 0x00100000;
		public const uint FIRST_PIPE_INSTANCE = 0x00080000;
	}

	#endregion

	#region SHGFI

	public static class SHGFI
	{
		[Flags]
		public enum E : uint
		{
			Icon = ICON,
			LinkOverlay = LINKOVERLAY,
			LargeIcon = LARGEICON,
			SmallIcon = SMALLICON,
			OpenIcon = OPENICON,
			UseFileAttributes = USEFILEATTRIBUTES,
		}

		public const uint ICON = 0x000000100;
		public const uint LINKOVERLAY = 0x000008000;
		public const uint LARGEICON = 0x000000000;
		public const uint SMALLICON = 0x000000001;
		public const uint OPENICON = 0x000000002;
		public const uint USEFILEATTRIBUTES = 0x000000010;
	}

	#endregion

	#region CREATION_DISPOSITION

	public static class CREATION_DISPOSITION
	{
		public enum E : uint
		{
			New = NEW,
			CreateAlways = CREATE_ALWAYS,
			OpenExisting = OPEN_EXISTING,
			OpenAlways = OPEN_ALWAYS,
			TruncateExisting = TRUNCATE_EXISTING,
		}

		public const uint NEW = 1;
		public const uint CREATE_ALWAYS = 2;
		public const uint OPEN_EXISTING = 3;
		public const uint OPEN_ALWAYS = 4;
		public const uint TRUNCATE_EXISTING = 5;
	}

	#endregion

	#region FILE_SHARE

	public static class FILE_SHARE
	{
		[Flags]
		public enum E : uint
		{
			None = NONE,
			Read = READ,
			Write = WRITE,
			Delete = DELETE,
		}

		public const uint NONE = 0x00000000;
		public const uint READ = 0x00000001;
		public const uint WRITE = 0x00000002;
		public const uint DELETE = 0x00000004;
	}

	#endregion

	#region FILE_ACCESS

	public static class FILE_ACCESS
	{
		[Flags]
		public enum E : uint
		{
			GenericRead = GENERIC_READ,
			GenericWrite = GENERIC_WRITE,
			GenericExecute = GENERIC_EXECUTE,
			GenericAll = GENERIC_ALL,
			GenericNone = GENERIC_NONE,
		}

		public const uint GENERIC_READ = 0x80000000;
		public const uint GENERIC_WRITE = 0x40000000;
		public const uint GENERIC_EXECUTE = 0x20000000;
		public const uint GENERIC_ALL = 0x10000000;
		public const uint GENERIC_NONE = 0x0;
	}

	#endregion
}
